{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "FaST-LMM Manual\r\n",
    "=====\r\n",
    "Factored Spectrally Transformed Linear Mixed Models\r\n",
    "========\r\n",
    "\r\n",
    "##### Version 0.6.0\r\n",
    "\r\n",
    "FaST-LMM Team, July 20, 2021"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Introduction\n",
    "\n",
    "FaST-LMM, which stands for Factored Spectrally Transformed Linear Mixed Models, is a program for performing \n",
    "genome-wide association studies (GWAS) on datasets of all sizes, up to one millions samples.\n",
    "\n",
    "See [FaST-LMM's README.md](https://github.com/fastlmm/FaST-LMM/blob/master/README.md) for installation instructions, documentation, code, and a bibliography.\n",
    "\n",
    "### Contacts\n",
    "\n",
    "* Email the developers at fastlmm-dev@python.org.\n",
    "* [Join](mailto:fastlmm-user-join@python.org?subject=Subscribe) the user discussion and announcement list (or use [web sign up](https://mail.python.org/mailman3/lists/fastlmm-user.python.org)).\n",
    "* [Open an issue](https://github.com/fastlmm/FaST-LMM/issues) on GitHub."
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Citing FaST-LMM\n",
    "\n",
    "If you use FaST-LMM in any published work, please cite [the relevant manuscript(s)](https://github.com/fastlmm/FaST-LMM/blob/master/README.md) describing it. "
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Data preparation\n",
    "\n",
    "This version of FaST-LMM is designed for use with randomly ascertained data with Gaussian residuals.  If you have case-control data with substantial ascertainment bias, you should first transform your phenotype(s) using [LEAP](https://github.com/omerwe/LEAP) (Weissbrod _et al._, _arXiv_ 2014).  If you are analyzing continuous phenotypes with non-Gaussian residuals, you should first transform your phenotype(s) using [Warped-LMM](https://github.com/PMBio/warpedLMM) (Fusi et al., _Nature Commun_ 2014).\n",
    "\n",
    "FaST-LMM uses four input files containing (1) the SNP data to be tested, (2) the SNP data used to determine the genetic similarity matrix (GSM) between individuals (which can be different from 1), (3) the phenotype data, and (4, optionally) a set of covariates.\n",
    "\n",
    "SNP files can be in PLINK format (ped/map, tped/tfam, bed/bim/fam, or fam/dat/map).  For the most speed, use the binary format in SNP major order.  See the PLINK manual http://pngu.mgh.harvard.edu/~purcell/plink/ (Purcell et al., _Am J Hum Genet_ 2007) for further details.  FaST-LMM also supports Hdf5 file format http://www.hdfgroup.org/HDF5/whatishdf5.html.  See https://github.com/fastlmm/PySnpTools for more details.  Note that each SNP will be standardized to have mean zero and standard deviation one across all individuals before processing.  Missing values are mean imputed.\n",
    "\n",
    "The required file containing the phenotype uses the PLINK alternate phenotype format with no header.  The covariate file also uses this format (with additional columns for multiple covariates).\n"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Notebook preparation and general use\n",
    "\n",
    "To prepare this notebook to run analyses, please run the following script."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "source": [
    "# set some ipython notebook properties\r\n",
    "%matplotlib inline\r\n",
    "\r\n",
    "# set degree of verbosity (adapt to INFO for more verbose output)\r\n",
    "import logging\r\n",
    "logging.basicConfig(level=logging.WARNING)\r\n",
    "\r\n",
    "# set figure sizes\r\n",
    "import pylab\r\n",
    "pylab.rcParams['figure.figsize'] = (10.0, 8.0)\r\n",
    "#pylab.plot([1,2,3],[4,5,6])\r\n",
    "\r\n",
    "# set display width for pandas data frames\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "If you would like to run any of the code below from the command line, first copy it into a file (_e.g._, `test.py`), and then run it by typing `python text.py` at the command line.\n",
    "\n",
    "If you would like to see all the options for a function just type `? <function_name>` to an ipython prompt."
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Single-SNP association testing\n",
    "\n"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### Traditional analysis: LMM(all)"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "First, let's run a standard LMM analysis in which the GSM uses (almost) all available SNPs.  The model for this analysis is called LMM(all) in [Widmer et al., Scientific Reports 2014](http://www.nature.com/articles/srep06874).  We'll apply this model to the synthetic data in `tests\\datasets\\synth`.  The data has 500 samples with 5000 SNPs, and was generated from a Balding-Nichols model with FST=0.05.\n",
    "\n",
    "When using a linear mixed model for association analysis, it is important to avoid proximal contamination ([Lippert _et al._, _Nat Meth_ 2011](http://www.nature.com/nmeth/journal/v8/n10/abs/nmeth.1681.html)). To understand proximal contamination, first note that a LMM with no fixed effects, using a realized relationship matrix for the GSM (as FaST-LMM does), is mathematically equivalent to linear regression of the SNPs on the phenotype, with weights integrated over independent Normal distributions having the same variance (_e.g._, Hayes _et al._, _Genet Res_ 2009).  That is, a LMM using a given set of SNPs for the GSM is equivalent to a form of linear regression using those SNPs as covariates to correct for confounding.  This equivalence implies that, when testing a given SNP, that SNP (and SNPs physically close to it) should be excluded from the computation of the GSM.  If not, when testing a particular SNP, we would also be using that same SNP as a covariate, making the log likelihood of the null model higher than it should be, thus leading to deflation of the test statistic and loss of power.\n",
    "\n",
    "Excluding the SNP you are testing and those SNPs in close proximity to it from the GSM in a naïve way is extremely computationally expensive.  A computationally efficient approach for performing the exclusion is to use a GSM computed from all but chromosome $i$ when testing SNPs on chromosome $i$ ([Lippert _et al._, _Nat Meth_ 2011](http://www.nature.com/nmeth/journal/v8/n10/abs/nmeth.1681.html)).  We call this approach leave out one chromosome (LOOC).  The analysis here does this.\n"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "source": [
    "# import the algorithm\r\n",
    "import numpy as np\r\n",
    "from fastlmm.association import single_snp\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# set up data\r\n",
    "##############################\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "pheno_fn = example_file(\"tests/datasets/synth/pheno_10_causals.txt\")\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "\r\n",
    "# run gwas\r\n",
    "###################################################################\r\n",
    "results_df = single_snp(bed_fn, pheno_fn, covar=cov_fn, count_A1=False)\r\n",
    "\r\n",
    "# manhattan plot\r\n",
    "import pylab\r\n",
    "import fastlmm.util.util as flutil\r\n",
    "pylab.rcParams['figure.figsize'] = (10.0, 8.0)#For some reason, need again (appears above too) to get big figures\r\n",
    "flutil.manhattan_plot(results_df[[\"Chr\", \"ChrPos\", \"PValue\"]].values,pvalue_line=1e-5,xaxis_unit_bp=False)\r\n",
    "pylab.show()\r\n",
    "\r\n",
    "# qq plot\r\n",
    "from fastlmm.util.stats import plotp\r\n",
    "plotp.qqplot(results_df[\"PValue\"].values, xlim=[0,5], ylim=[0,5])\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAHgCAYAAAB0CWMeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAACTuElEQVR4nOzdd3iU15k+/vuoV1SQkBAC0Xuz6cZg3HtLcRKnl031puz+djebLd9ks8mm2U5c4t47trEpxphiehEISQh1od5GGnWNps+c3x+PZkaDChKgEeD7c11cSDOa9z0zc855n1NfpbUGEREREY2+oLFOABEREdFnBQMvIiIiogBh4EVEREQUIAy8iIiIiAKEgRcRERFRgDDwIiIiIgqQkLFOwHAkJSXpqVOnjnUyiIiIiM7p5MmTLVrr5IGeuywCr6lTpyIrK2usk0FERER0Tkqp6sGe41AjERERUYAw8CIiIiIKEAZeRERERAHCwIuIiIgoQBh4EREREQUIAy8iIiKiAGHgRURERBQgDLyIiIiIAoSBFxEREVGAMPAiIiIiChAGXkREREQBwsCLiIiIKEAYeBEREREFCAMvIiIiogBh4EVEREQUIAy8iIiIiAIkZKwTQEREREOzWoHDh+X/q68GJk4c6xTR+WLgRUREdIl77TWgvl5+PnUK+OEPgcTEsU0TnR8ONRIREV3CzGZf0AUAdjtQXT126aELw8CLiIjoEhYRAcTE+D+WlDQ2aaELx8CLiIjoEhYUBDz4IJCeLgHXXXcBkyePdarofHGOFxER0SUuLQ343vfGOhV0MbDHi4iIiChAGHgRERERBQiHGonosmcyAXl5QGgocNVVQAhrNiK6RLF6IqLLmsUCPP880NEhvxcVAV//OqDUmCaLiGhAHGokostaTY0v6AKAigrpASMiuhQx8CKiy9q4cf6/h4XJvkdERJciBl5EdFmbOBG47TYgKgqIiwMeeEDmehERXYo4x4uILnurV8s/IqJLHXu8iIiIiAKEgRcRERFRgDDwIiIiIgoQBl5EREREAcLAi4iIiChAGHgRERERBQgDLyIiIqIAYeBFREREFCAMvIiIiIgChIEXERERUYAw8CIiIiIKEAZeRERERAHCwIuIiIgoQBh4EREREQUIAy8iIiKiAGHgRURERBQgDLyIiIiIAoSBFxEREVGAMPAiIiIiChAGXkREREQBwsCLiIiIKEAYeBEREREFCAMvIiIiogBh4EVEREQUIAy8iIiIiAKEgRcRERFRgDDwIiIiIgoQBl5EREREAcLAi4iIiChAGHgRERERBQgDLyIiIqIAGbXASyk1WSm1VylVqJQqUEr9rPfxRKXULqVUWe//CaOVBiIiIqJLyWj2eDkB/LPWej6A1QB+opSaD+CXAPZorWcB2NP7OxEREdEVb9QCL611o9Y6u/fnbgBFACYBuBfAK71/9gqA+0YrDURERESXkoDM8VJKTQVwFYBMACla68bepwwAUgKRBiIiIqKxNuqBl1IqBsD7AH6ute7q+5zWWgPQg7zu+0qpLKVUltFoHO1kEhEREY26UQ28lFKhkKDrDa31pt6Hm5RSE3ufnwigeaDXaq2f1Vov11ovT05OHs1kEhEREQXEaK5qVABeAFCktX6kz1NbAHyz9+dvAtg8WmkgIiIiupSEjOKx1wL4OoDTSqnc3sd+BeAPADYqpb4LoBrAA6OYBiIiIqJLxqgFXlrrQwDUIE/fOFrnJSIiIrpUced6IiIiogBh4EVEREQUIAy8iIiIiAKEgRcRERFRgDDwIiIiIgoQBl5EREREAcLAi4iIiChAGHgRERERBQgDLyIiIqIAYeBFREREFCAMvIiIiIgChIEXERERUYAw8CIiIiIKEAZeRERERAHCwIuIiIgoQBh4EREREQUIAy8iIiKiAGHgRURERBQgDLyIiIiIAoSBFxEREVGAMPAiIiIiChAGXkREREQBwsCLiIiIKEAYeBEREREFCAMvIiIiogBh4EVEREQUIAy8iIiIiAKEgRcRERFRgDDwIiIiIgoQBl5EREREAcLAi4iIiChAGHgRERERBQgDLyIiIqIAYeBFREREFCAMvIiIiIgChIEXERERUYAw8CIiIiIKEAZeRERERAHCwIuIiIgoQBh4EREREQUIAy8iIiKiAGHgRURERBQgDLyIiIiIAoSBFxEREVGAMPAiIiIiChAGXkREREQBwsCLiIiIKEAYeBEREREFCAMvIiIiogBh4EVEREQUIAy8iIiIiAKEgRcRERFRgDDwIiIiIgoQBl5EREREAcLAi4iIiChAGHgRERERBQgDLyIiIqIAYeBFREREFCAMvIiIiIgChIEXERERUYAw8CIiIiIKEAZeRERERAHCwIuIiIgoQBh4EREREQUI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"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "lambda=1.0078\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "   sid_index                   SNP  Chr  GenDist  ChrPos        PValue  SnpWeight  SnpWeightSE  SnpFractVarExpl  Mixing    Nullh2\n",
       "0         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  2.990684e-23   0.418653     0.040052         0.424521       0  0.451117\n",
       "1        392   snp1422_m0_.49m1_.5  3.0   2392.0  2392.0  8.251920e-23  -0.416495     0.040300         0.420587       0  0.279711\n",
       "2        650  snp1200_m0_.37m1_.36  3.0   2650.0  2650.0  3.048007e-14   0.328870     0.042021         0.331240       0  0.279711\n",
       "3          3   snp433_m0_.14m1_.11  3.0   2003.0  2003.0  9.202499e-10  -0.268289     0.042973         0.269670       0  0.279711\n",
       "4        274   snp2832_m0_.46m1_.1  4.0   3274.0  3274.0  7.069762e-04   0.170421     0.050003         0.151124       0  0.542046\n",
       "5         13  snp1413_m0_.04m1_.03  3.0   2013.0  2013.0  8.161238e-04  -0.148719     0.044157         0.149377       0  0.279711\n",
       "6        214   snp2804_m0_.16m1_.3  3.0   2214.0  2214.0  1.239807e-03   0.150705     0.046396         0.144180       0  0.279711\n",
       "7        117   snp751_m0_.04m1_.25  1.0    117.0   117.0  1.527432e-03  -0.152430     0.047827         0.141523       0  0.614963\n",
       "8        265  snp1440_m0_.35m1_.32  4.0   3265.0  3265.0  1.771049e-03   0.136281     0.043358         0.139610       0  0.542046\n",
       "9        307  snp2162_m0_.61m1_.42  2.0   1307.0  1307.0  1.816576e-03  -0.143296     0.045700         0.139280       0  0.534262"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sid_index</th>\n",
       "      <th>SNP</th>\n",
       "      <th>Chr</th>\n",
       "      <th>GenDist</th>\n",
       "      <th>ChrPos</th>\n",
       "      <th>PValue</th>\n",
       "      <th>SnpWeight</th>\n",
       "      <th>SnpWeightSE</th>\n",
       "      <th>SnpFractVarExpl</th>\n",
       "      <th>Mixing</th>\n",
       "      <th>Nullh2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>2.990684e-23</td>\n",
       "      <td>0.418653</td>\n",
       "      <td>0.040052</td>\n",
       "      <td>0.424521</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>392</td>\n",
       "      <td>snp1422_m0_.49m1_.5</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>2392.0</td>\n",
       "      <td>8.251920e-23</td>\n",
       "      <td>-0.416495</td>\n",
       "      <td>0.040300</td>\n",
       "      <td>0.420587</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>650</td>\n",
       "      <td>snp1200_m0_.37m1_.36</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2650.0</td>\n",
       "      <td>2650.0</td>\n",
       "      <td>3.048007e-14</td>\n",
       "      <td>0.328870</td>\n",
       "      <td>0.042021</td>\n",
       "      <td>0.331240</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3</td>\n",
       "      <td>snp433_m0_.14m1_.11</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2003.0</td>\n",
       "      <td>2003.0</td>\n",
       "      <td>9.202499e-10</td>\n",
       "      <td>-0.268289</td>\n",
       "      <td>0.042973</td>\n",
       "      <td>0.269670</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>274</td>\n",
       "      <td>snp2832_m0_.46m1_.1</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3274.0</td>\n",
       "      <td>3274.0</td>\n",
       "      <td>7.069762e-04</td>\n",
       "      <td>0.170421</td>\n",
       "      <td>0.050003</td>\n",
       "      <td>0.151124</td>\n",
       "      <td>0</td>\n",
       "      <td>0.542046</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>13</td>\n",
       "      <td>snp1413_m0_.04m1_.03</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2013.0</td>\n",
       "      <td>2013.0</td>\n",
       "      <td>8.161238e-04</td>\n",
       "      <td>-0.148719</td>\n",
       "      <td>0.044157</td>\n",
       "      <td>0.149377</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>214</td>\n",
       "      <td>snp2804_m0_.16m1_.3</td>\n",
       "      <td>3.0</td>\n",
       "      <td>2214.0</td>\n",
       "      <td>2214.0</td>\n",
       "      <td>1.239807e-03</td>\n",
       "      <td>0.150705</td>\n",
       "      <td>0.046396</td>\n",
       "      <td>0.144180</td>\n",
       "      <td>0</td>\n",
       "      <td>0.279711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>117</td>\n",
       "      <td>snp751_m0_.04m1_.25</td>\n",
       "      <td>1.0</td>\n",
       "      <td>117.0</td>\n",
       "      <td>117.0</td>\n",
       "      <td>1.527432e-03</td>\n",
       "      <td>-0.152430</td>\n",
       "      <td>0.047827</td>\n",
       "      <td>0.141523</td>\n",
       "      <td>0</td>\n",
       "      <td>0.614963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>265</td>\n",
       "      <td>snp1440_m0_.35m1_.32</td>\n",
       "      <td>4.0</td>\n",
       "      <td>3265.0</td>\n",
       "      <td>3265.0</td>\n",
       "      <td>1.771049e-03</td>\n",
       "      <td>0.136281</td>\n",
       "      <td>0.043358</td>\n",
       "      <td>0.139610</td>\n",
       "      <td>0</td>\n",
       "      <td>0.542046</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>307</td>\n",
       "      <td>snp2162_m0_.61m1_.42</td>\n",
       "      <td>2.0</td>\n",
       "      <td>1307.0</td>\n",
       "      <td>1307.0</td>\n",
       "      <td>1.816576e-03</td>\n",
       "      <td>-0.143296</td>\n",
       "      <td>0.045700</td>\n",
       "      <td>0.139280</td>\n",
       "      <td>0</td>\n",
       "      <td>0.534262</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 4
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {
    "scrolled": true
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "For more on advanced features of single_snp see this [supplemental notebook](https://nbviewer.jupyter.org/github/fastlmm/FaST-LMM/blob/master/doc/ipynb/fastlmm2021.ipynb). Topics covered include multiple phenotypes, filtering large output files, caching intermediate results, and controller muliti-processor runs."
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### Improving power: LMM(all+select)"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "In [Widmer et al., Scientific Reports 2014](http://www.nature.com/articles/srep06874), we have shown that power can be increased while still maintaining control of type I error by using two GSMs: one based on all SNPs (`G0`) and one based on selected SNPs that are highly correlated with the phenotype (`G1`).  The model is called LMM(select + all).  This approach has greater computational demands (we recommend using a cluster computer when analyzing large data sets). Here is an example of how to apply this model to the synthetic data."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "source": [
    "# example for two kernel feature selection\r\n",
    "# this takes a couple of minutes to run on a 20-proc machine.\r\n",
    "from pysnptools.snpreader import Bed\r\n",
    "from fastlmm.association import single_snp_all_plus_select\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "\r\n",
    "from pysnptools.util.mapreduce1.runner import LocalMultiProc\r\n",
    "import multiprocessing\r\n",
    "runner = LocalMultiProc(multiprocessing.cpu_count(),mkl_num_threads=4)\r\n",
    "    \r\n",
    "# define file names\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "snp_reader = Bed(bed_fn, count_A1=True)\r\n",
    "pheno_fn = example_file(\"tests/datasets/synth/pheno_10_causals.txt\")\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "\r\n",
    "# find the chr5 SNPs\r\n",
    "test_snps = snp_reader[:,snp_reader.pos[:,0] == 5]\r\n",
    "\r\n",
    "#select the 2nd kernel and run GWAS\r\n",
    "results_df = single_snp_all_plus_select(test_snps=test_snps,G=snp_reader,pheno=pheno_fn,GB_goal=2,do_plot=True,runner=runner)\r\n",
    "\r\n",
    "import fastlmm.util.util as flutil\r\n",
    "flutil.manhattan_plot(results_df[[\"Chr\", \"ChrPos\", \"PValue\"]].values,pvalue_line=1e-5,xaxis_unit_bp=False)\r\n",
    "pylab.show()\r\n",
    "\r\n",
    "results_df.head()"
   ],
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "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MztkZl+X9DeSPmpmuyTdmrsPAABwWjizURN29y9WeOojjZonAADAbMaV6wEAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkBC8AAIBICF4AAACRELwAAAAiIXgBAABEQvACAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkBC8AAIBICF4AAACRELwAAAAiIXgBAABEQvACAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkBC8AAIBICF4AAACRnNmMmZrZfkn9kiYkjbv7kmaUAwAAIKamBK+cD7t7VxPnDwAAEFUzg1fNTpw4oXvvvbfgsbe85S165zvfqUwmo/vvv7/kPYsXL9bixYs1NDSkBx98sOT5JUuW6K1vfat6e3v16KOPljx/00036dprr1VXV5d+/etflzz/gQ98QFdddZWOHTumpUuXljz/kY98RFdccYUOHjyoZ599tuT52267TZdddpn27t2rFStWlDx/++23a8GCBdqxY4dWrVpV8vynP/1pvfKVr9SWLVvU0tJS8vwdd9yhc889Vxs2bNCGDRtKnr/zzjs1f/58rV27Vm1tbSXPf/WrX5UkvfTSS9q5c2fBc/Pnz9edd94pSVq+fLn27dtX8Py5556rO+64Q5L0zDPP6NChQwXPX3jhhfrMZz4jSVq6dKmOHTtW8Pwll1yiT3ziE5KkJ554QidOnCh4/rLLLtNtt90mSXrkkUfU19dX8PyiRYt06623SpIefPBBDQ0NFTz/+te/Xh/84AclSffff78ymUzB89dcc43e+973SlLJeiex7rHuse6x7rHuFWPdq77u5WvWGC+X9FszW2dmd5V7gZndZWYtZtZSvIIAAACciszd48/U7LXuftjMXi1pmaT/3d1LI2jOkiVLvFzCBAAAmG3MbF2l8etNafFy98O5/x2SHpX0rmaUAwAA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"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "   sid_index                   SNP  Chr  GenDist  ChrPos        PValue  SnpWeight  SnpWeightSE  SnpFractVarExpl    Mixing    Nullh2\n",
       "0         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  6.246233e-33  -0.395548     0.030731         0.499629  0.688079  0.545958\n",
       "1        307  snp3970_m0_.53m1_.17  5.0   4307.0  4307.0  2.415292e-04   0.149395     0.040400         0.163479  0.688079  0.545958\n",
       "2        177   snp3853_m0_.1m1_.04  5.0   4177.0  4177.0  2.162433e-03  -0.109143     0.035401         0.136856  0.688079  0.545958\n",
       "3         46   snp2743_m0_.03m1_.1  5.0   4046.0  4046.0  2.178166e-03   0.109598     0.035574         0.136760  0.688079  0.545958\n",
       "4        236   snp726_m0_.28m1_.31  5.0   4236.0  4236.0  2.831892e-03   0.104920     0.034969         0.133250  0.688079  0.545958"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sid_index</th>\n",
       "      <th>SNP</th>\n",
       "      <th>Chr</th>\n",
       "      <th>GenDist</th>\n",
       "      <th>ChrPos</th>\n",
       "      <th>PValue</th>\n",
       "      <th>SnpWeight</th>\n",
       "      <th>SnpWeightSE</th>\n",
       "      <th>SnpFractVarExpl</th>\n",
       "      <th>Mixing</th>\n",
       "      <th>Nullh2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>6.246233e-33</td>\n",
       "      <td>-0.395548</td>\n",
       "      <td>0.030731</td>\n",
       "      <td>0.499629</td>\n",
       "      <td>0.688079</td>\n",
       "      <td>0.545958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>307</td>\n",
       "      <td>snp3970_m0_.53m1_.17</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4307.0</td>\n",
       "      <td>4307.0</td>\n",
       "      <td>2.415292e-04</td>\n",
       "      <td>0.149395</td>\n",
       "      <td>0.040400</td>\n",
       "      <td>0.163479</td>\n",
       "      <td>0.688079</td>\n",
       "      <td>0.545958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>177</td>\n",
       "      <td>snp3853_m0_.1m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4177.0</td>\n",
       "      <td>4177.0</td>\n",
       "      <td>2.162433e-03</td>\n",
       "      <td>-0.109143</td>\n",
       "      <td>0.035401</td>\n",
       "      <td>0.136856</td>\n",
       "      <td>0.688079</td>\n",
       "      <td>0.545958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>46</td>\n",
       "      <td>snp2743_m0_.03m1_.1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4046.0</td>\n",
       "      <td>4046.0</td>\n",
       "      <td>2.178166e-03</td>\n",
       "      <td>0.109598</td>\n",
       "      <td>0.035574</td>\n",
       "      <td>0.136760</td>\n",
       "      <td>0.688079</td>\n",
       "      <td>0.545958</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>236</td>\n",
       "      <td>snp726_m0_.28m1_.31</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4236.0</td>\n",
       "      <td>4236.0</td>\n",
       "      <td>2.831892e-03</td>\n",
       "      <td>0.104920</td>\n",
       "      <td>0.034969</td>\n",
       "      <td>0.133250</td>\n",
       "      <td>0.688079</td>\n",
       "      <td>0.545958</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 5
    }
   ],
   "metadata": {
    "scrolled": true
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "Aside: In some applications, you may want to use two kernels constructed from two pre-specified sets of SNPs (i.e., with no feature selection). Here we show how to do that and how to simultaneously find h2 and the mixing weight between the kernels."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "source": [
    "# example script for two kernel without feature selection\r\n",
    "import numpy as np\r\n",
    "import pysnptools.util\r\n",
    "from pysnptools.snpreader import Bed\r\n",
    "from fastlmm.association import single_snp\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "\r\n",
    "# define file names\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "snp_reader = Bed(bed_fn, count_A1=True)\r\n",
    "pheno_fn = example_file(\"tests/datasets/synth/pheno_10_causals.txt\")\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "\r\n",
    "# select data\r\n",
    "###################################################################\r\n",
    "snp_reader = Bed(bed_fn,count_A1=True)\r\n",
    "\r\n",
    "# partition snps on chr6 vs rest\r\n",
    "G1_chr = 6\r\n",
    "G0 = snp_reader[:,snp_reader.pos[:,0] != G1_chr]\r\n",
    "G1 = snp_reader[:,snp_reader.pos[:,0] == G1_chr]\r\n",
    "\r\n",
    "# test on chr5\r\n",
    "test_snps = snp_reader[:,snp_reader.pos[:,0] == 5]\r\n",
    "\r\n",
    "results_df = single_snp(test_snps, pheno_fn, K0=G0, K1=G1, covar=cov_fn, GB_goal=2, count_A1=True)\r\n",
    "\r\n",
    "\r\n",
    "import fastlmm.util.util as flutil\r\n",
    "flutil.manhattan_plot(results_df[[\"Chr\", \"ChrPos\", \"PValue\"]].values,pvalue_line=1e-5,xaxis_unit_bp=False)\r\n",
    "pylab.show()\r\n",
    "results_df.head()"
   ],
   "outputs": [
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "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AADAjFCsxauuAsvrMMZcaK1tM8ZcKDcha6T0VxM9IEnLly9nhnwAADDrFQxe1tpHcm8zxlxgrW2fwvJWSPqypO+kf/92Cq8FAAAwq8QZXB/2u7gPNMb8WtIGSVcbY44aY74mF7g+YYxplvTx9P8AAABzQsnB9TlM3Adaa79Y4K6PlblMAACAmlBui9dPKlIKAACAOaCs4GWt/VGlCgIAAFDrym3xAgAAwCQRvAAAADwheAEAAHhC8AIAAPCE4AUAAOAJwQsAAMATghcAAIAnBC8AAABPCF4AAACeELwAAAA8IXgBAAB4QvACAADwhOAFAADgCcELAADAE4IXAACAJwQvAAAATwheAAAAnhC8AAAAPCF4AQAAeELwAgAA8ITgBQAA4AnBCwAAwBOCFwAAgCcELwAAAE8IXgAAAJ4QvAAAADwheAEAAHhC8AIAAPCE4AUAAOAJwQsAAMATghcAAIAnBC8AAABPCF4AAACeELwAAAA8IXgBAAB4QvACAADwhOAFAADgCcELAADAE4IXAACAJwQvAAAATwheAAAAnhC8AAAAPCF4AQAAeELwAgAA8ITgBQAA4AnBCwAAwBOCFwAAgCcELwAAAE8IXgAAAJ4QvAAAADwheAEAAHhC8AIAAPCE4AUAAOAJwQsAAMATghcAAIAnBC8AAABPCF4AAACeELwAAAA8IXgBAAB4QvACAADwhOAFAADgCcELAADAE4IXAACAJwQvAAAATwheAAAAnhC8AAAAPCF4AQAAeELwAgAA8ITgBQAA4AnBCwAAwBOCFwAAgCcELwAAAE8IXgAAAJ4QvAAAADwheAEAAHhC8AIAAPCE4AUAAOAJwQsAAMATghcAAIAnBC8AAABPCF4AAACenFKNhRpjWiUNSEpKmrDWLq9GOQAAAHyqSvBK+4i1tquKywcAAPCKrkYAAABPqtXiZSW9Yoyxkn5srX2g2IO7u7v18MMPZ9123XXX6T3veY8SiYQeffTRvOfcdNNNuummmzQ8PKzHH3887/7ly5fr+uuvV19fn5555pm8+2+99VZdffXV6urq0vPPP593/4c+9CFdfvnlam9v10svvZR3/8c+9jFdfPHFOnLkiF577bW8+++44w5dcMEFOnDggN544428+++8806de+652rt3rzZs2JB3/+c+9zmdddZZamxsVF1dXd7999xzj04//XTV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"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "   sid_index                   SNP  Chr  GenDist  ChrPos        PValue  SnpWeight  SnpWeightSE  SnpFractVarExpl  Mixing    Nullh2\n",
       "0         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  2.990684e-23  -0.418653     0.040052         0.424521       0  0.451117\n",
       "1        236   snp726_m0_.28m1_.31  5.0   4236.0  4236.0  2.229561e-03   0.133405     0.043400         0.136587       0  0.451117\n",
       "2        785  snp4608_m0_.35m1_.39  5.0   4785.0  4785.0  5.489019e-03   0.122558     0.043942         0.124139       0  0.451117\n",
       "3        239  snp2615_m0_.49m1_.25  5.0   4239.0  4239.0  8.029456e-03  -0.123956     0.046572         0.118546       0  0.451117\n",
       "4        937    snp1115_m0_.1m1_.1  5.0   4937.0  4937.0  8.030124e-03   0.116014     0.043589         0.118545       0  0.451117"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sid_index</th>\n",
       "      <th>SNP</th>\n",
       "      <th>Chr</th>\n",
       "      <th>GenDist</th>\n",
       "      <th>ChrPos</th>\n",
       "      <th>PValue</th>\n",
       "      <th>SnpWeight</th>\n",
       "      <th>SnpWeightSE</th>\n",
       "      <th>SnpFractVarExpl</th>\n",
       "      <th>Mixing</th>\n",
       "      <th>Nullh2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>2.990684e-23</td>\n",
       "      <td>-0.418653</td>\n",
       "      <td>0.040052</td>\n",
       "      <td>0.424521</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>236</td>\n",
       "      <td>snp726_m0_.28m1_.31</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4236.0</td>\n",
       "      <td>4236.0</td>\n",
       "      <td>2.229561e-03</td>\n",
       "      <td>0.133405</td>\n",
       "      <td>0.043400</td>\n",
       "      <td>0.136587</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>785</td>\n",
       "      <td>snp4608_m0_.35m1_.39</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4785.0</td>\n",
       "      <td>4785.0</td>\n",
       "      <td>5.489019e-03</td>\n",
       "      <td>0.122558</td>\n",
       "      <td>0.043942</td>\n",
       "      <td>0.124139</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>239</td>\n",
       "      <td>snp2615_m0_.49m1_.25</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4239.0</td>\n",
       "      <td>4239.0</td>\n",
       "      <td>8.029456e-03</td>\n",
       "      <td>-0.123956</td>\n",
       "      <td>0.046572</td>\n",
       "      <td>0.118546</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451117</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>937</td>\n",
       "      <td>snp1115_m0_.1m1_.1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4937.0</td>\n",
       "      <td>4937.0</td>\n",
       "      <td>8.030124e-03</td>\n",
       "      <td>0.116014</td>\n",
       "      <td>0.043589</td>\n",
       "      <td>0.118545</td>\n",
       "      <td>0</td>\n",
       "      <td>0.451117</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 6
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "#### Improving speed and memory use when there is little family strucutre: LMM(select)+PCs"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "In the same publication, we have shown that a simpler, more computationally efficient model can be used when the data is  confounded only by population structure and not by family structure or cryptic relatedness.  Under these circumstances, we have found that a model with a single GSM based on selected SNPs in combination with principle components as fixed-effect covariates yields good control of type I error and power.  \n",
    "\n",
    "This model, called LMM(select)+PCs, should be used with caution.  Even if you explicitly remove closely related individuals from your data, cryptic relatedness may remain.\n",
    "\n",
    "To use this model, first identify the principle components to be used with the PCgeno algorithm as described in [Widmer et al., Scientific Reports 2014](http://www.nature.com/articles/srep06874). \n",
    "\n",
    "Then you can call single_snp_select with these PCs as covariates."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "source": [
    "from pysnptools.snpreader import Bed\r\n",
    "from fastlmm.util import compute_auto_pcs\r\n",
    "from fastlmm.association import single_snp_select\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# define file names\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "snp_reader = Bed(bed_fn, count_A1=True)\r\n",
    "pheno_fn = example_file(\"tests/datasets/synth/pheno_10_causals.txt\")\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "\r\n",
    "# find number of PCs\r\n",
    "pcs = compute_auto_pcs(bed_fn,count_A1=True)\r\n",
    "print(\"selected number of PCs:\", pcs[\"vals\"].shape[1])\r\n",
    "\r\n",
    "# test on chr5\r\n",
    "test_snps = snp_reader[:,snp_reader.pos[:,0] == 5]\r\n",
    "\r\n",
    "results_df = single_snp_select(test_snps=test_snps, G=snp_reader, pheno=pheno_fn, covar=pcs, GB_goal=2)\r\n",
    "\r\n",
    "\r\n",
    "import fastlmm.util.util as flutil\r\n",
    "flutil.manhattan_plot(results_df[[\"Chr\", \"ChrPos\", \"PValue\"]].values,pvalue_line=1e-5,xaxis_unit_bp=False)\r\n",
    "pylab.show()\r\n",
    "\r\n",
    "results_df.head()"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "selected number of PCs: 1\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "C:\\Users\\Carl\\miniconda3\\envs\\gtg\\lib\\site-packages\\fastlmm\\inference\\linear_regression.py:378: RuntimeWarning: invalid value encountered in true_divide\n",
      "  F = yS / denom\n",
      "C:\\Users\\Carl\\miniconda3\\envs\\gtg\\lib\\site-packages\\scipy\\stats\\_distn_infrastructure.py:2007: RuntimeWarning: invalid value encountered in less_equal\n",
      "  cond2 = cond0 & (x <= _a)\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAl4AAAHgCAYAAAB0CWMeAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAA5SElEQVR4nO3deZQkZ33m++cndQsJbWhp1EKStSIsIYSgG8YSi4SEQDaIRQhhRjBg+yLuMcx4ZnzvGcZ35gw+5845tscYe+wxHnGRECAwEmhHu9RqLa2WunpR713V6uq9qrvWrn3/3T/eDEfulVlV+WZV9vdzTp3KjFzizYjIN5543zcizd0FAACA2jum3gUAAAA4WhC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIJJF9S5AJc4880y/4IIL6l0MAACAaa1du7bT3ZcUe2xBBK8LLrhATU1N9S4GAADAtMxsT6nH6GoEAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAESyqN4FmG+6u6XXXpOOOUa6+mrplFPqXSIAANAoCF5Zhoelu+6SBgbC/e3bpT/+Y2nx4vqWCwAANAa6GrO0taWhS5J6eqTOzvqVBwAANBaCV5bTTpOOPTa9f9xxdDUCAIC5Q/DKctpp0q23Sm9/u7R0qfSlL0knnljvUgEAgEbBGK88l10W/gAAAOYaLV4AAACRELwAAAAiIXgBAABEQvACAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkBC8AAIBICF4AAACRELwAAAAiIXgBAABEQvACAACIpGbBy8yON7PXzewNM9tiZn+emX6hmb1mZjvN7JdmdlytygAAADCf1LLFa1TS9e7+XklXSbrJzH5H0l9K+r67XyKpR9If1bAMAAAA80bNgpcHA5m7izN/Lul6Sb/KTL9H0udqVQYAAID5pKZjvMzsWDPbIOmwpGckvSmp190nMk/ZL+mcWpYBAABgvqhp8HL3SXe/StK5kj4o6bcrfa2Z3WFmTWbW1NHRUasiAgAARBPlrEZ375W0QtLVkt5mZosyD50r6UCJ19zp7svdffmSJUtiFBMAAKCmanlW4xIze1vm9gmSbpS0TSGA3Zp52tckPVyrMgAAAMwni6Z/yoydLekeMztWIeDd5+6PmdlWSf9sZv+vpPWSflTDMgAAAMwbNQte7r5R0vuKTN+lMN4LAADgqMKV6wEAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkBC8AAIBICF4AAACRELwAAAAiIXgBAABEQvACAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkBC8AAIBICF4AAACRELwAAAAiIXgBAABEQvACAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkNQteZnaema0ws61mtsXM/iQz/btmdsDMNmT+fq9WZQAAAJhPFtXwvSck/am7rzOzkyWtNbNnMo99393/uobzBgAAmHdqFrzcvU1SW+Z2v5ltk3ROreYHAAAw30UZ42VmF0h6n6TXMpO+bWYbzewuMzstRhkAAADqrebBy8xOkvRrSf/e3fsk/UDSxZKuUmgR+16J191hZk1m1tTR0VHrYgIAANRcTYOXmS1WCF33uvsDkuTuh9x90t2nJP1Q0geLvdbd73T35e6+fMmSJbUsJgAAQBS1PKvRJP1I0jZ3/5us6WdnPe3zkjbXqgwAAADzSS3PavyQpK9K2mRmGzLT/kzSl83sKkkuabekb9awDAAAAPNGLc9qfFmSFXno8VrNEwAAYD7jyvUAAACRELwAAAAiIXgBAABEQvACAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAA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QtKNZtYi6eOZ+wAAAEeFRbV6Y3f/comHbqjVPAEAAOYzrlwPAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkBC8AAIBICF4AAACRELwAAAAiIXgBAABEQvACAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4AUAABAJwQsAACASghcAAEAkBC8AAIBICF4AAACRELwAAAAiIXgBAABEQvACAACIhOAFAAAQCcELAAAgEoIXAABAJAQvAACASAheAAAAkRC8AAAAIllUj5ma2W5J/ZImJU24+/J6lAMAACCmugSvjI+5e2cd5w8AABAVXY0AAACR1KvFyyU9bWYu6X+7+53lntzV1aUf//jHOdPe/e536wMf+IDGx8d17733Frzmqquu0lVXXaWhoSHdd999BY8vX75cV1xxhY4cOaIHH3yw4PGrr75a73rXu9TZ2anHHnus4PGPfvSjuuiii9Te3q4nn3yy4PEbbrhB5513nvbt26fnnnuu4PGbbrpJS5cu1a5du/Tiiy8WPP7pT39aZ555pnbs2KFXX3214PHPf/7zOvXUU7V582Y1NTUVPH7bbbfprW99qzZs2KANGzYUPH777bdr8eLFWrNmjbZs2VLw+Ne//nVJ0qpVq9Tc3Jzz2OLFi3X77bdLklauXKnW1tacx9/61rfqtttukyQ9++yz2r9/f87jp5xyim655RZJ0pNPPqn29vacx8844wzdfPPNkqRHH31UXV1dOY8vXbpUN910kyTpgQceUF9fX87j5557rj7+8Y9Lku677z4NDQ3lPH7hhRfq2muvlSTde++9Gh8fz3n80ksv1TXXXCNJBdudxLbHtse2x7bHtpePba/8tpetXsHrw+5+wMzeLukZM9vu7jlLwszukHSHJJ1zzjn1KCMAAMCcMnevbwHMvitpwN3/utRzli9f7sUSJgAAwHxjZmtLnTgYfYyXmZ1oZicntyV9QtLm2OUAAACIrR5djWdJetDMkvn/3N0LO2wBAAAaTPTg5e67JL039nwBAADqjctJAAAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4AUAABAJwQuYI83N0n33SVNT9S4JAGC+IngBc2R0VBoYkNzrXRIAwHy1qN4FABrFe94T/gAAKIUWLwAAgEgIXgAAAJEQvAAAACIheAEAAERC8AIAAIiE4IUFpbeXyzUAABYughcWjOFh6e/+Ttq6td4lAQBgZriOFxaME06QvvY16dxz610SAABmhuCFBeWCC+pdAgAAZo6uRgAAgEgIXpImJqRf/Urq6qp3Sea3e++Vdu+udykAAFi4CF6SzKRjjw3/UdrZZ0tvfWu9SwEAwMLFGC+F0PX5z9e7FPPf9dfXuwQAACxstHgBmLGBgXqXoHGNjdW7BABqgeAFYEb6+qTvfU/q7q53SeL43vek1tY48xoelv7yL6X29jjzm0uTk/UuATC/EbwAVGRiQvqrv5IOHgz3TzlF+uM/lk4/vb7liuUzn5HOOSfOvE44QfrDP5TOOivO/ObKm2+GgAqgNIIXgIosWiTdcov09ren05YsqV95YnvnO6Xjjos3v3POWXgn/Jx/vnT77fUuBY5Gu3cvnKEPBK8aa21NWwiAhe6SS0IAA4pZtCheqyCQ7eWXF87ljgheNbZ7t9TWVu9S1NaePeHHq7GwDA5Kq1fXuxTA/LVrl/TII9M/r7tbmpqqfXlQ2le+Il1xRb1LURmCV4197GPSsmX1LkVtvfGGtG9fvUuBag0PSwcO1LsUC9/q1Y1zcHU0nUm5d690zz3ln3P66dLFF0//Xj/96cJpbZmNxx9vnG29nghedTA5Kb34Yhis3Ag+8xnpPe+pdynmj+Fh6Z/+SRoZqXdJyjvzTOkLX6h3KYrr7Q07M/d6l2R6U1ON0doxNSX99V8fPb/gcdZZ0oc/XP45b3ub9O53T/9e3/62dNFFc1IsSaE1etWquXu/uXLWWeHED8wOwasOpqZC5cZp1zM3OTl/d8rHHx9aOt/ylnqXpP4OHpSOHKn+dSeeKF155cIYXH7NNY0xrumYY6R/+2+lM86od0nieMtbKmvNqsSxx87N+yTGx+fnZVqWLQth9Gg1MCD9j/8R1s9smM/XvVeW5cuXe1NTU72LseD19YXWmIV2inox998vXXihtHx5vUuCcp55Rlq6lBZRAI2hvT3UadMxs7XuXnQPxflJR5HWVqmzszGC16c/HffU/lqbmgotDo3mxhvrM1936aGHpE9+Ms7vi05OhvW3EFroAMxcJaFrOg1Y1Te22YwLe+97pRtuCLfHxqSnnpq/3XXTOeGEuW/er5cdO6Sf/zy9Pzws9fRU/vrBwcrOvDqamEm/9VvxwvkTT0ivvRZnXjNx+HC9SxC0tUmbNtW7FEBtHDokPfbY9M8jeC0gIyPhqtBzMZD3mGOkk046+o7Qd+6c2ZijWrr0UunWW9P7b74prVlT+euPOy6EDORatizeNcc++UnpAx+IM69qTU1J9903P072cF+4B3sLSXNzuBRGYqFcWHQh6+oK3ZCXXTb9cxsqeL36auMNWG9rk7ZsCbePP176D/9hbrqkFi2SPvSh2b/PQpD9+3qHD4fWifk0ZNAsrNvEFVdIn/hE5a9fvFi66qo5L9a80ddX7xJMb/HiOC2wd95Z/U70mGPCWXfZ29hM7N0r9ffP7j3e8Y5w0gRqa9GidHs8fFj6xS/qW55a27On/p9xdDT0SFVywkZDBa/h4docTY2OpoFubKx2zfbPP1/YlWiWW6HPRdfJyIi0YUN1r+nqkrZtm/28Z2rfvpn9YPD4eAjkSSvhNddIn/tc6HY92q1eHcb8zXe//OX8a6WMbd260BL6hS+Elup62Lev9IWSu7rm5lp+o6Ozf4+51tUl3XVXvUtRnYsuCj/fJIWf+PrGN+pbnlo77zzp5ptn/vqJCen112dXhne8o/JrdjZU8Lr++rnrWhgdDWNnpBCIduwItzs7pfXr52Ye+U48sbA1a+lS6bd/u7LXr1hR2digycn0s1VqcrK+1x0bHJSGhqp/3eLF0r/+17nL9fjjw/Sj3WmnLYxLXnzjG9Kpp87+fZqawvXziuntDWdgzqWJibm7vtfSpeFinrW61MPY2PS9BR/6UNjBFdPfP/vLHwwMSD/60ezeoxbOOEP60pcqf/6hQ/W9oPRzz4UhFUeTZOjMTLmHhptyhobCPnYuLKjLSfT1hSO/666r/Ty3bg2Dz7/5zThnRc2FXbvC9YSK7Uw3bQpho9IQJ4WWvVNPnZudc0uLdPbZ9Ttar5WenrB8im0j69aFyygQ8morudDkNdeE/xMTxQ/AkiBUrNV4fFzavz9comSuvPCCdMop0vvfP3fvWSvPPRdaRup12Y/x8RBYzj23PvP/2c+kL395brqL9+wJvQrvetfs3yvbY4+FYQgXXFD+eUeOhJOPZtI7smmTdPLJ088jMTkZAstM6/UVK8Lvv5YK9LMxNRXq55NPLr0snnsu1BuVXBR2fDzsxy6/vLL5l7ucxIJq8Tr++JkNIt61q/oLnl1+eWi6rCR0vPBC3MGLd99d2CT//POh0ipV3nPOqf402O3b5+4q1n19s7/o3HzU0lL6R9B37qzsDJdqDA1JDz4489c3whXW8119dfiTwnb2k58Uf96iRaUr4MWL09D1wgtzs5yuuy5e6GptnV033Q03lA9dY2OFP4kzOBi68efCwEAYEF4vN94YQtfq1bP/3dnzz5/70CWFdTTd/m98PNTZMx2ScuaZua3LfX3lezp+8hPp2Wdzpz38cO5YwObm0q3J731vbS5v1NwcxvJu2lR+aNB55xUuq46O4r8asHhx5aFrOgsqeB13XPqzDNkDpqdz4MDMKqVLLqnsCOj88wsHrj74YGXdfkND1Z3BJoVm7+yAtW9fCFZmpcdBnX56ZVccPnAgDKKVpI9+NPRbz2RsVb5ly0JXqiQ9+WTj/FzSBz8YtpNibrstjCebiYceKj6Q+YQTyp8UcdddpZvMx8elH/6w+rLkf3dWrJjdzmnt2twzrtxDZTdTZunZuaecEo5gS4XhSpx+evmzfavtJGhtnXmQGxur7Pc029rmfnyUezigk0ILzv79uY8vXhyW1Vw47bQwVGQuTE1VdxJA9vJdunT6kxDWrJm+W2ourFuXu5874YTCoSgrVqT1tRS2gdn8/urZZ4f9RLK9rltX/rcZf/d3pc9+NnfaNdeEFrDnngvjgi+5RLr22tznDA2FFs7TT0+Dz89/np55u2aNtHnzzD/HpZdKn/pUOPgp14p66aWF+/iTT07Hx9XKggheIyOFA9+amyuvzD7ykdp2cV14YWHXxic+ESqT6SxaFHYWUvg84+Nhx5S/Yxselp5+OtzO7tZyDwPl3/WusDFv3z6zz7ByZTgyOPbY3A3Rvfqj2qEh6eWXc6cNDKQtNZddVrszwDZurP7EgXxjY+mYvtma6eU6Pvax4tusWegSSuSHgJtvDoOwi1m8OHSdV6OrKwTlbJddNrvv0yWXhAo+MTo6s2tgTU7m7nQSp5wyu+EB5X6qaHAwdEsVU+oHpltbZ36gMThY/DPmu+aatB6ZCXfplVdyp5mF9eQeDvTyf9fwuOOqa9nJXz7V9BLs3Vv6+l/79+deKqO7u7rfOZyYSMe3XXDB9MHr5JND/VDNCR+PPhp+kDsJbNnzLOWii6ZvDfrgB3N/ruqkk8L+bjY2bUr3t9ddV74bcOnSwu/KkiUh+F57bagrjjmmsFWpr6/w4Oizn02X/ZVX1qbVsBLHHx8+w2yC37Tcfd7/XXnlMh8d9YqtXeve05M77c033QcGwu3RUffu7srfL9tMX9fZOf1zWlrcX3nFfe9e95GR3Memptzb2sLtgwfdm5qKv8fYmPu994bntLSEaV1dhe+Xr7fXfWIivd/V5f7MM8Wf29YWHi9lYiJ8huyyJ8t+Lh054t7f737ffe6Dg2Ha2JhXta0UMzzsvm7d7MtXa7t3uz/9dLi9bVu4PzDgvmdPfctVyi9+EdZXtbq73TdtKpw+NOT+0kvVvdcrr7iPj5d/zvbt7i++WP45XV2F3+kf/7i6skynp8e9tbX042Nj6Xd2eNh98+bC5/T2Vv59KPb67dvdH3/cfcWKyt5jaqr09J/8JL0/POz+y18WrovR0eLrZ2CgsM4ZHAzroFh9PxfKLbfs/UklDhxwn5xM769b575x48zLNlsDA7nlyfaznxVO27rV/dVXp3/f++8P77tihfvhw7MqYl2Njrpv2FD+OT097itXln5cUpOXyDR1D1WV/F188TI/dKj8Qsh24EBh0Ni+Peyo3d3b28OXtZi+vrATSxw6lFsRPPVUqPCr9cQToaLM1txceuMvZ3S0fEUzPh4q3GSZrV+fhrZKTU2FZVFMa2sIduVs3JjOs6PD/fnnSz+3vT0s1+l2iPmam0MFOD4e1snkZBpEihkdzd2RdXaWr/za2kpXHoOD7jt2VFfeWnj66bCeenpmFmqms3p1GmqrNTgYQnExpXZag4Pu+/eH28lnGhpy37evsnnmH0C4h+WTTNu5M3wPK32/UvbuDUG3lrq73X/zm9IBYO3aUPHv2BHqu+x6K/s5Bw7MvAzj47nz37w5LMNi2ttDPZevVB3X1FT4XuvWhZ18JQ4eLB4Wp9PXV/7AMfHzn5cOksVMTLi/8Ub15XGf/sA4X3u7+5o15Z9z992l69QXXihdtyX7t95e94ceCrenptL1ODFReGCS1D2l9hn5ijVgTFcfV6KpqfzBypEj4Ts1FyYmwnZUKg8s+OC1bNkyf+qp9KihkqPciYnyX5rOzuIVwmuvhcojCQ2vvx5W1shI9V+O6axbV33YKKW9Pewkp9PV5b5q1dzMs5zu7nBUW4mnny6sBKqp8NxDRdLVFZZDYmTE/Ve/Su8PDua2nAwPe9lAf/Bg7vtlGxpKWxTrqViA2bWr8laOgYHCA4JsBw8WBplKPP54+e/LAw+EgPXKK7nTe3rCQZJ7WL5r14ZwPZ177w3bzKuvFu5UV68O4T8xOFj6wGuurFlT/oj//vsrW0ctLeXriIGB2rT2lDI0VF092NUVDqqq8YtfhP8bNuSG/vvvLz7v7N6AUtauTXeQBw4UD48vvVT+u5CUIbtuGhlJ33dysvLQmG1oyP2xx6p7zdhYCEbZ7rsvt/y7doX9VznTtY4Xq4cnJnJfNzhY/Tp+4onCeqVcfbxmTXpAVsrISAjL2QdVxcJwdiPMTE1MhPU2Our+yCPFn9MQwaunJ91pFjuC2707d2Noaiq/Ua1aVf5I/oUXcu83N5c+0puN/fun/7JXYnKyspa4ycnClpGentJdK1u3VtY60NlZWXdq4oUXygezUi0l7qEyOHSo/HOynzsb0x1VVmOm3dTV2rq1/LLNrtw2biz+ffrlL6uf78GDaRCsZFucmpr+wKO/v7rtKqbe3tKtXtmtbPNRqa70ZIcym9abmdq4MTc079+fu310dhZ27UxOhlA9XTfY/v3p+kjeY/v23CDX3p7WF6XqvOyeBPcQbmbT8v3KK2n939ZWOkA+80zp/VXSMjyTuq7ag/CBgXBQNRdGR4vvU7u7Cw9KhodLB6/163PvZ3eLT06m66e93f3ll0MumK534ODBdL0UC4NtbenBW6l9ZLngtSAG10vhTIsrrgi33/GO3MdGRsJF7rIvLrhsWflTb6++uvwA3GuvDYNKkwGh73xnZT8FUEz2xeyamnJPbz1yZPqBt+vXl78Uw8hIGLRZybVIsi8055nfTXvb28IgzWLOPz8dzF3sivfJoP/RUek3vyn+HitXFg6sff/7yw9i/eIX09vu4Sy/sbEw2HhsLFwrJ/s5pSQDP59+ema/anDmmcWn79yZDo59/PHy75Gs30oG/e/YEU4cmZgof6ZfcqJFMZddVn7ZZp848J73FH6fpHBGZjFdXeFMp2KSn8yQwrZ46FC4Pz6ebr9vvBEG1h4+HM6Wne6CxyedlH6vV6/OPcOqpaX82WVTU6UHvGf7zW8KBzpPTYUB3eXWwbHH5g4a3rkzHQB+8snh8Wp+ELrcbymW+hzVXFpkYCAMGN67t/QFabu6wvaRXU8UO4N1crL04Phdu6r7kffEueeG5SaF73l/fzgzrq8v3D/jjHASQfbZm88+G5b77/xO6fd9+OGwjY+NhfWaXMvwLW/JPUvwrLNCfeFe/MzA1tbw2bI/94UXhjPjElNTaT2TXa8PDxf/6at3vjNc1PfIkbAtlboMxEc+Unp/deRIWAa9vYV1TKntZnw81MvJZVgqdeKJ4UzGfM3NpS89tHJl+L91a+HZpsXq5IMHC0/oestbQp1fTLLNJLKv83nMMeFkr9bWsH6vvjrkgpNOKv/d6e5Ol12xE62WLk0vFXP++WEwflVKJbL59Lds2bKSyXR0tLB1ajqlmvjHxnLHSfT0hK7HcpJunX/+Z/dHHy3+nC1bcueR9JdX2s3Y1hZa8Eo1jx48GMpRrebm8FeJpMxJl01nZ2gpaW2d/kir0kGoL79cvqWmra10ecfG0ubusbHCsQYzGZfnHo6SsreJ5CinpSU9gh4dLT8W7De/Kb2uBwZyu8GmpsLf4GDudlPsfav5DOVU2mU6PBy2wexl2dcXPnuxVtutW0M5d+1y/+EPw7SenrDcentLtwBOTJQfl5Ss2927y3fXHToUuhmLjX0aGEjXX/aQg/37w/Lq7Q2DjMsNnq3Eiy/mdm9nt5CNjro//HDagrBiRfGutIkJ92efrWx+W7aUrgvGxkJdUWq7KnViyssvFw7L6OlJBx+Pjua+rrMzbCNDQ+F2e3v1rfpDQ2kLx9NPpy1B+fV9fndbOevWhe/a1FQYc1rtmMjR0bRr8Y03CsezbdsWtrekp+WFF9Lv6aFDldfR2d/tgwfDeMLJyfIt5mvWhO0k/zM9+2zpuqe/P7xvpeOMn3mm9HN7ekp3QSdd4Z2d0+/zhodDmffsqbzOPnIk92Suao2MVPb9Klf+xx4LdUVSfz/2WIN0NSZKNd8/+eT0C849BIW77w63d+zI3UFPV+EXs3Vr+ELu3h0q2HI7uZGRNMgdOFD5eID+/rBhZAec8fGwsR04UDimZe/etL+/oyO3qbSlJbxPf391lWF2H35XVxh02dJS2DQ+MZE75qTY2Wj5WltDpTU8HMqWzGtyMsyr2jOq7r8/N0y0tqbjhsopdhbL+Hgo1+uvhy/e7t3Fl1v2WaZ79qRhavv2sAzydxBJJdXTU7oJfefOMO8nnwzrcCbjkvbtC58rv8IcHk6XUX6YPXw4bB8jI+FzrF4dxsq1txd2rfX2ut911/RjSSYnKx93NjaWrq/8ndW+fSEIbN1aeFB0+HDhQcDERPHv5JYtueEhceRI8QOFX/96+jEmlcgPPTt2hO6mZBzbqlXlT2rp6ys/eLiYw4dLd9f297v/4Afhc+/bVzoc7N6d7nTyv4/PPRf+8m3aFOqilpZ0J5rU0ytXhuVfyc611E41f2d55Ej6PUtOtMnvStu2La03K6mbipmYKL48e3oKd8xvvln5gPNEdvfj0FDYHpOw5155CM+XhOFsra3h+1uJ7HovqdfcQx0xMVHZWMx8U1OlD/ySgD02VnofkIwDfPzx3PIlJ1xl15lPPZVbP0xNhTD7+utpYOrpSbsN169P646dO0N3drlGhPzQO++Cl6SbJO2QtFPSd6Z7fnbwyh8HkK2rq/RKnJoq3MEcORLOiqm0Qs2vlFasCO+brPDR0bABZu+Es1sz3ItXNOPjYcXu3h0qjCS47NqVO88tW8KXb9++MM8NG0IFkN/6MTiY/u3YkRvw9uwJr9uypfQRVLl+/87OdIeXv0Pr7w9HXskp+93dxVsbsj93Mc3NoWI8cmRmg1Xdw3ZQ7kgu+Qyjo+nnTT7Pvn25ZevvD59p+/aw/NevD9vh668XP2ru7w/rc8eO8J755WhuDtvOdJcsOHw4txzDw4XjGdzD+iw2wLrcGWLj44WtdEkwOnQofJcOHcrd6SU7/PHxsCzuvz/dAa1alW7bQ0OF39GOjuJlaW4uPJgaHw/LbWSkcAzIxo3h+/rYY+lyTb6/mzYVvtf+/bnLPznj1z2sn3Xrwv1kLF8SLLOP3t98M5S9kjPhEoODxcNIOcllVwYHi5+d29IS1lG5ciRH3clnnpwMn6+vL3yGPXtyd1DJOs/fRgcHc6ft2ZNui9kBOqmDitmxI63/xsZyQ0RSRz7/fPVnzW7fHuabXx93dhZu093d4fPv2lV8HNjgYLrN9PWFeuH++0O5h4enH5eZtG5NThZv9c4erzQyElqwkmV28GCoK7JPikq2mddeC48V24YmJsL0kZH0RLOJidIH0jt3pvPet6/08k5aAvOV6vVJyp2cVVsueL3xRihfsee0toYeo2Jj5QYGwvrOP6BKQtDBg2G7zP9MSWhLpg8PF9bVBw6E90628507Q+/Ek0+m03btCnXDQw8V1l87d5YfxzmvgpekYyW9KekiScdJekPS5eVec+WVIXitXh1W8OHDYYN+7bXcFZKk7mTa/v25j2e3Zo2OVnYW4ORk2Dls2hQW9OBg2Mlt3hzmVaw1Zc+eUKGvW1e8FSW/ktu2LW0x6O/PDYj5zbdJc7d7mHe5I8ZSX7ChoXS5dHTkHoUnLTylKpw9e9L3zQ5VL74Yyv7qq6FcY2Nh51iqK2BsLBylPPBAGk6Sbsbk6CMJRLt2hfc+dCitjKZrHk+6Z0sdoezcGbp53NMvT3t7WGdPPFEYCqemClt7kmWYlLecpGs5u7vn8OGwPCs5SyzZyfT1he0jCYmjo6EFyL2wW6y3N6zfJLzs3Vv+6Hv16vC+SfB58MH0sT170p1lcpTa3Z27/fX2pq2XbW2FO4LkEiXZwT57QPOWLaFl6fXXw7LOfu/x8fQad/mt0sn3JfuSCkeOhO/prl3p6e99fWH7eeGFwlPiX3stvD5ZzkndkuyAEz09udtesZ3J6GjuwPShobTlZ/PmMP+WljCP7PceGgrLoLk5fI5Sl2zJ34G0tqb1TLLumpvD7VWr0u3r8OHcQcPJ5xwfT7eh5DM9/XTprrjBwdz6ob+/sK7p6EjD9vh4emZp/sFaR0dlvQzZO72kaz+/Dnj11bDef/Wr9DO3tYVlffhw8Z1kS0vuEI4kqLqH7SV7HRQ7IH3zzbSVP/sgIfvM+6THYWQkHHC9+WZ6GZBk29+6NQ2w+Ze9yZ7viy+GeR06FAJB9gDwXbvS7Th7m0y24ampECy2bcs9aai3NyyHTZvSdf7ii2F5jo2l67avr/zwh2xTU2GbTw4IOzrCZ9q7N+yXK20dm5xM66yBgcLtZ//+woHtExOF67qrq/T3aWIi3Zba2ipvmT94MF1/w8PpvmbDhrBNzbfgdbWkp7Lu/2dJ/7nca/LHeCVf9OHh3A/vHlZocpTV2hoqkK1bw4ZZrGvs1VfDxpF0J+V/mZPKt6cnbKB794YNfGSk+DiVgYGw4iYnwwoYHg4bS/bR2QMPhHKPjqaVTvLlTJo9u7rCF7nUhVKTjSO/Mti8Od1Qs1tHSrVirVoVKsXJyfBlTI54duwIG+T+/aGspbo3mpqq67Lcti0so337wnJNjhL7+sLnXbcurN9k57FjR3ptpqQ1M7u7r7U1bYXKNjISKpIDB9KLSG7alLut9PeH+ff2hrP4sreNrVvTQN3XF15XbAfR3592W5S7ptDu3aHSyg4zU1Mh0KxdG/4n20528/hLL4X3fv31sGPevDnM8+DBwlPQ29sLK7TkzMGmpjD/sbHiR4iHD4dlvX9/8RaM7It1uofnZQejiYmwzJKKeWgo7YpItr3R0XS7ck9bbpJteevW0iG0qWn6CjHpQncP885uBdy5Mz0KTsb5uIfvXbLD3LKl8EAh6XZ1T8eCbN4cltGqVeH5XV1p4BsbC3VC/rCAp54KO92kG3VyMnd5Jq0xU1PpDrXU512/PvditEkoyR631tSUlqFYHZKE5GKtDOvWFe+2TfT3h4OmZJ10dBTWg0mLe2LHjnS7yj+o6esr/O7k907kb5P5rQ+7dqUtxIOD4f3eeKOwFapYPTg8HJ5XrLck6XpOLh1QzLPP5taP4+O5yy77fbPHI3V25n7O1avDcky2r+z3yzY0FNZB/vcoW37I2LmzsFV8bCwd4/Xyy6XPDG1vT9dvubo++S61tIRtfN++UG8lZ/gmyzhZJ1u2hOnZ40Y3bUrnMT4evrPr1qXb2UsvpcEyvzcp0dZW2GuRfLY1awqX57p1YVupZLzg3r3hvZOwnrxXd3f4/K+/nk6bb8HrVkn/X9b9r0r6h3KvKTa4vqsrfPleeCH8TxZacnHEpqawApJTkpPuiGLjZFavTiuhSgcalgpEK1cWPyV4YCAczWdXtuPjpZvpX3ml/KDnjRsrK+uGDemGUKrMiZ07w3OPHEkr5NmOa+nuTj9Ha2vYMJOxKvnGxwsr4OkGwGa3urW05FYuydHa2FioXDduTHdsib17w1/yxc9eRkkFmd9dmv2c7B1AcjXqYuOdkhCStGq4pwO53cN28OijoWLJruCzj+a2bMld56V2BJOToWl827bw/sPDYf579oSQ2NycOzC4rS0Eg+RqzTPt3nUP67XSS3Ak16h6+OEwz1IVaTlJK15y1J6Y7oSCamTXGcl2krQwJSEqqX9eeSUc7E333Rwayl3O2d+TfMlYv/b2dJvMH9LgnrZGr1kTlskDD6Q7se7uNGC2tITt6qWXioerZLvavbtwnZSrQ9auDTuw0dHy20D+mMNNm0KYTOrGjo60xXD79ty6YsOG4tt9EnZmcgmMYhftTA44d+wIy2vnzsKTm1pbi/cMrF8f6vtNm0KdsG9fZVdxLxV0+/rSg8DW1sJ1Um4/MTyc1jfJdpyE8j170voyf5n296f13uBgbmBN1kl3d+4lm5ITD4aG0tCdPe4ukdTxyXO6unIPbhK9vYUNK93dYbs+ciT0fJS7ht0bb5T+Hj76aPlrOGa/R7aRkTDPZMzZ9u2le5bKBa9pTuauHzO7Q9IdmbsDZjZHv54HAP/iTEmd9S4EgIZT8qe26xG8DkjK/tnNczPTcrj7nZLujFUoAEcfM2ty9+X1LgeAo0c9LqC6RtI7zexCMztO0u9LeqQO5QAAAIgqeouXu0+Y2bclPaVwhuNd7r4ldjkAAABiszAGDACOPmZ2R2ZYAwBEQfACAACIZMH8SDYAAMBCN28vJwEAtWRmuyX1S5qUNMHZjQBiIHgBOJp9zN25jheAaOhqBAAAiITgBeBo5ZKeNrO1mV/KAICao6sRwNHqw+5+wMzeLukZM9vu7i/Wu1AAGhstXgCOSu5+IPP/sKQHJX2wviUCcDQgeAE46pjZiWZ2cnJb0ickba5vqQAcDehqBHA0OkvSg2YmhXrw5+7+ZH2LBOBowJXrAQAAIqGrEQAAIBKCFwAAQCQELwAAgEgIXgAAAJEQvAAAACIheAGYV8zsx2Z2a73LAQC1QPACsOCYGdcgBLAgEbwA1JWZ/Rsz22hmb5jZTzOTP2pmq8xsV9L6ZWbXmdlLZvaIpK1mdryZ3W1mm8xsvZl9LPO8r5vZQ2b2jJntNrNvm9l/zDxntZmdnnneVZn7G83sQTM7LTP935nZ1sz0f85MOz3znhszr7kyM/27ZnZPplx7zOwWM/urTJmeNLPFmectM7OVmR/kfsrMzo67lAHMFwQvAHVjZu+W9F8kXe/u75X0J5mHzpb0YUmflvQXWS95v6Q/cfdLJX1Lkrv7eyR9WdI9ZnZ85nlXSLpF0gck/XdJQ+7+PkmvSvo3mef8RNJ/cvcrJW2S9N8y078j6X2Z6f9nZtqfS1qfmfZnmdcmLpZ0vaTPSPqZpBWZMg1L+lQmfP29pFvdfZmkuzJlAnAUorkeQD1dL+l+d++UJHfvzvyMz0PuPqXQsnVW1vNfd/fWzO0PKwQauft2M9sj6dLMYyvcvV9Sv5kdkfRoZvomSVea2amS3ubuKzPT75F0f+b2Rkn3mtlDkh7KmtcXMvN63szOMLNTMo894e7jZrZJ0rGSkp8e2iTpAknvUgiCz2Q+27GS2qpeUgAaAsELwHw0mnXbsm4PzuD1U1n3pzR9vfcpSR+VdLOk/8fM3lPJvNx9yszGPf0dtmReJmmLu19dYdkBNDC6GgHU0/OSvmhmZ0hhLFUVr31J0u2Z110q6bck7ajkhe5+RFKPmX0kM+mrklaa2TGSznP3FZL+k6RTJZ2UN6/rJHW6e1+F5dwhaYmZXZ15/eJMFyuAoxAtXgDqxt23mNl/Vwg9k5LWV/Hyf5T0g0wX34Skr7v7aKY7rxJfk/RPZvZWSbsk/YFCN+DPMl2RJul/unuvmX1X0l1mtlHSUOa1FXH3scwJAv8z876LJP2tpC2VvgeAxmFpqzgAAABqia5GAACASAheAAAAkRC8AAAAIiF4AQAARELwAgAAiITgBQAAEAnBCwAAIBKCFwAAQCT/PxBhw6//JT5IAAAAAElFTkSuQmCC"
     },
     "metadata": {
      "needs_background": "light"
     }
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "   sid_index                   SNP  Chr  GenDist  ChrPos        PValue  SnpWeight  SnpWeightSE  SnpFractVarExpl  Mixing    Nullh2\n",
       "0         52   snp495_m0_.01m1_.04  5.0   4052.0  4052.0  1.670645e-33  -0.401989     0.030901         0.503993       0  0.374711\n",
       "1        307  snp3970_m0_.53m1_.17  5.0   4307.0  4307.0  2.395301e-04   0.153425     0.041464         0.163735       0  0.374711\n",
       "2        236   snp726_m0_.28m1_.31  5.0   4236.0  4236.0  1.131284e-03   0.115714     0.035335         0.145333       0  0.374711\n",
       "3        177   snp3853_m0_.1m1_.04  5.0   4177.0  4177.0  2.491699e-03  -0.108143     0.035575         0.135106       0  0.374711\n",
       "4         46   snp2743_m0_.03m1_.1  5.0   4046.0  4046.0  2.530152e-03   0.109681     0.036137         0.134901       0  0.374711"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sid_index</th>\n",
       "      <th>SNP</th>\n",
       "      <th>Chr</th>\n",
       "      <th>GenDist</th>\n",
       "      <th>ChrPos</th>\n",
       "      <th>PValue</th>\n",
       "      <th>SnpWeight</th>\n",
       "      <th>SnpWeightSE</th>\n",
       "      <th>SnpFractVarExpl</th>\n",
       "      <th>Mixing</th>\n",
       "      <th>Nullh2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>52</td>\n",
       "      <td>snp495_m0_.01m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>4052.0</td>\n",
       "      <td>1.670645e-33</td>\n",
       "      <td>-0.401989</td>\n",
       "      <td>0.030901</td>\n",
       "      <td>0.503993</td>\n",
       "      <td>0</td>\n",
       "      <td>0.374711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>307</td>\n",
       "      <td>snp3970_m0_.53m1_.17</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4307.0</td>\n",
       "      <td>4307.0</td>\n",
       "      <td>2.395301e-04</td>\n",
       "      <td>0.153425</td>\n",
       "      <td>0.041464</td>\n",
       "      <td>0.163735</td>\n",
       "      <td>0</td>\n",
       "      <td>0.374711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>236</td>\n",
       "      <td>snp726_m0_.28m1_.31</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4236.0</td>\n",
       "      <td>4236.0</td>\n",
       "      <td>1.131284e-03</td>\n",
       "      <td>0.115714</td>\n",
       "      <td>0.035335</td>\n",
       "      <td>0.145333</td>\n",
       "      <td>0</td>\n",
       "      <td>0.374711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>177</td>\n",
       "      <td>snp3853_m0_.1m1_.04</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4177.0</td>\n",
       "      <td>4177.0</td>\n",
       "      <td>2.491699e-03</td>\n",
       "      <td>-0.108143</td>\n",
       "      <td>0.035575</td>\n",
       "      <td>0.135106</td>\n",
       "      <td>0</td>\n",
       "      <td>0.374711</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>46</td>\n",
       "      <td>snp2743_m0_.03m1_.1</td>\n",
       "      <td>5.0</td>\n",
       "      <td>4046.0</td>\n",
       "      <td>4046.0</td>\n",
       "      <td>2.530152e-03</td>\n",
       "      <td>0.109681</td>\n",
       "      <td>0.036137</td>\n",
       "      <td>0.134901</td>\n",
       "      <td>0</td>\n",
       "      <td>0.374711</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 7
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Epistasis"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "You can test for epistatic interactions between pairs of SNPs as well.  Here is an example analysis applied to the same synthetic data.  Note that this version of the code uses a likelihood ratio test based on maximum-likelihood estimates.  A REML-based version is in the works."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "source": [
    "# import the algorithm and reader\r\n",
    "import numpy as np\r\n",
    "from fastlmm.association import epistasis\r\n",
    "from pysnptools.snpreader import Bed\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# define file names\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "bed_reader = Bed(bed_fn, count_A1=True)\r\n",
    "pheno_fn = example_file(\"tests/datasets/synth/pheno_10_causals.txt\")\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "\r\n",
    "# partition data into the first 50 SNPs on chr1 and all but chr1\r\n",
    "G0 = bed_reader[:,bed_reader.pos[:,0] != 1]\r\n",
    "test_snps = bed_reader[:,bed_reader.pos[:,0] == 1][:,0:50]\r\n",
    "\r\n",
    "# run epistasis analysis\r\n",
    "results_df = epistasis(test_snps, pheno_fn, G0=G0, covar=cov_fn)\r\n",
    "\r\n",
    "# qq plot\r\n",
    "from fastlmm.util.stats import plotp\r\n",
    "plotp.qqplot(results_df[\"PValue\"].values, xlim=[0,5], ylim=[0,5])\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "lambda=0.9234\n"
     ]
    },
    {
     "output_type": "stream",
     "name": "stderr",
     "text": [
      "C:\\Users\\Carl\\miniconda3\\envs\\gtg\\lib\\site-packages\\numpy\\lib\\scimath.py:122: RuntimeWarning: invalid value encountered in less\n",
      "  if any(isreal(x) & (x < 0)):\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "                   SNP0  Chr0  GenDist0  ChrPos0                  SNP1  Chr1  GenDist1  ChrPos1    PValue  NullLogLike  AltLogLike        H2      Beta  Variance_Beta\n",
       "0  snp2376_m0_.38m1_.49   1.0      20.0     20.0  snp1754_m0_.19m1_.42   1.0      38.0     38.0  0.000451  -700.878718 -694.724583  0.000399  0.151714   7.372408e-07\n",
       "1   snp625_m0_.03m1_.07   1.0       NaN      NaN  snp3000_m0_.28m1_.34   1.0       5.0      5.0  0.001306  -700.387891 -695.220652  0.000399 -0.117448   5.272537e-07\n",
       "2   snp250_m0_.23m1_.19   1.0      15.0     15.0  snp2377_m0_.06m1_.02   1.0      30.0     30.0  0.002279  -698.768488 -694.113511  0.000399 -0.145412   8.980881e-07\n",
       "3   snp625_m0_.03m1_.07   1.0       NaN      NaN   snp376_m0_.17m1_.17   1.0       9.0      9.0  0.002287  -700.206861 -695.555229  0.000399 -0.132940   7.511802e-07\n",
       "4   snp125_m0_.64m1_.41   1.0      21.0     21.0  snp1754_m0_.19m1_.42   1.0      38.0     38.0  0.002404  -700.873861 -696.267594  0.000399 -0.131984   7.477779e-07\n",
       "5  snp2878_m0_.82m1_.58   1.0      42.0     42.0  snp1878_m0_.58m1_.36   1.0      48.0     48.0  0.002568  -698.579519 -694.033792  0.000399 -0.131828   7.560385e-07\n",
       "6   snp1625_m0_.4m1_.47   1.0      23.0     23.0  snp1128_m0_.14m1_.13   1.0      35.0     35.0  0.003067  -700.445456 -696.061998  0.000399  0.129267   7.540972e-07\n",
       "7  snp1753_m0_.17m1_.19   1.0      28.0     28.0     snp3_m0_.55m1_.46   1.0      32.0     32.0  0.004327  -700.735073 -696.664365  0.000399  0.126579   7.791090e-07\n",
       "8   snp250_m0_.23m1_.19   1.0      15.0     15.0     snp3_m0_.55m1_.46   1.0      32.0     32.0  0.004486  -700.927439 -696.889564  0.000399 -0.120030   7.063126e-07\n",
       "9  snp1753_m0_.17m1_.19   1.0      28.0     28.0    snp251_m0_.1m1_.49   1.0      33.0     33.0  0.006503  -700.728933 -697.026244  0.000399 -0.115623   7.152112e-07"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SNP0</th>\n",
       "      <th>Chr0</th>\n",
       "      <th>GenDist0</th>\n",
       "      <th>ChrPos0</th>\n",
       "      <th>SNP1</th>\n",
       "      <th>Chr1</th>\n",
       "      <th>GenDist1</th>\n",
       "      <th>ChrPos1</th>\n",
       "      <th>PValue</th>\n",
       "      <th>NullLogLike</th>\n",
       "      <th>AltLogLike</th>\n",
       "      <th>H2</th>\n",
       "      <th>Beta</th>\n",
       "      <th>Variance_Beta</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>snp2376_m0_.38m1_.49</td>\n",
       "      <td>1.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>snp1754_m0_.19m1_.42</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>0.000451</td>\n",
       "      <td>-700.878718</td>\n",
       "      <td>-694.724583</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.151714</td>\n",
       "      <td>7.372408e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>snp625_m0_.03m1_.07</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>snp3000_m0_.28m1_.34</td>\n",
       "      <td>1.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>5.0</td>\n",
       "      <td>0.001306</td>\n",
       "      <td>-700.387891</td>\n",
       "      <td>-695.220652</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.117448</td>\n",
       "      <td>5.272537e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>snp250_m0_.23m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>snp2377_m0_.06m1_.02</td>\n",
       "      <td>1.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>30.0</td>\n",
       "      <td>0.002279</td>\n",
       "      <td>-698.768488</td>\n",
       "      <td>-694.113511</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.145412</td>\n",
       "      <td>8.980881e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>snp625_m0_.03m1_.07</td>\n",
       "      <td>1.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>snp376_m0_.17m1_.17</td>\n",
       "      <td>1.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>9.0</td>\n",
       "      <td>0.002287</td>\n",
       "      <td>-700.206861</td>\n",
       "      <td>-695.555229</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.132940</td>\n",
       "      <td>7.511802e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>snp125_m0_.64m1_.41</td>\n",
       "      <td>1.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>21.0</td>\n",
       "      <td>snp1754_m0_.19m1_.42</td>\n",
       "      <td>1.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>38.0</td>\n",
       "      <td>0.002404</td>\n",
       "      <td>-700.873861</td>\n",
       "      <td>-696.267594</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.131984</td>\n",
       "      <td>7.477779e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>snp2878_m0_.82m1_.58</td>\n",
       "      <td>1.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>42.0</td>\n",
       "      <td>snp1878_m0_.58m1_.36</td>\n",
       "      <td>1.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>48.0</td>\n",
       "      <td>0.002568</td>\n",
       "      <td>-698.579519</td>\n",
       "      <td>-694.033792</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.131828</td>\n",
       "      <td>7.560385e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>snp1625_m0_.4m1_.47</td>\n",
       "      <td>1.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>23.0</td>\n",
       "      <td>snp1128_m0_.14m1_.13</td>\n",
       "      <td>1.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>35.0</td>\n",
       "      <td>0.003067</td>\n",
       "      <td>-700.445456</td>\n",
       "      <td>-696.061998</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.129267</td>\n",
       "      <td>7.540972e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>snp1753_m0_.17m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>snp3_m0_.55m1_.46</td>\n",
       "      <td>1.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.004327</td>\n",
       "      <td>-700.735073</td>\n",
       "      <td>-696.664365</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>0.126579</td>\n",
       "      <td>7.791090e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>snp250_m0_.23m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>15.0</td>\n",
       "      <td>snp3_m0_.55m1_.46</td>\n",
       "      <td>1.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>32.0</td>\n",
       "      <td>0.004486</td>\n",
       "      <td>-700.927439</td>\n",
       "      <td>-696.889564</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.120030</td>\n",
       "      <td>7.063126e-07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>snp1753_m0_.17m1_.19</td>\n",
       "      <td>1.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>28.0</td>\n",
       "      <td>snp251_m0_.1m1_.49</td>\n",
       "      <td>1.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>33.0</td>\n",
       "      <td>0.006503</td>\n",
       "      <td>-700.728933</td>\n",
       "      <td>-697.026244</td>\n",
       "      <td>0.000399</td>\n",
       "      <td>-0.115623</td>\n",
       "      <td>7.152112e-07</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 8
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAUAAAAE9CAYAAAB6LLu1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8rg+JYAAAACXBIWXMAAAsTAAALEwEAmpwYAAA6VklEQVR4nO3dd3xUVfrH8c+THkhIQuihJIJAqKGDFAU7drFh2Z+uZd1dCwakiIgoIkjXtbEqu7qKa1lXXZVdXRsKGHozIAIJJPRAepmZzPn9MZNsgBAmZCaTmXner1deTu7cufc5JnxzyznnijEGpZQKREHeLkAppbxFA1ApFbA0AJVSAUsDUCkVsDQAlVIBSwNQKRWwQrxdQFXNmjUziYmJJyyzWCyEhYV5pyAP8sd2+WObQNvlS07XpnXr1h01xjQ/eblHA1BEMoACoBywGWP617R+YmIia9euPWFZRkYGJ4eiP/DHdvljm0Db5UtO1yYRyaxu/fo4AhxpjDlaD/tRSqla0WuASqmA5ekANMB/RGSdiNzn4X0ppVStePoUeJgxJltEWgBfish2Y8z3VVdwBuN9AAkJCWRkZJywgZycHA+X6B3+2C5/bBNou3xJbdvk0QA0xmQ7/3tYRD4CBgLfn7TOEmAJQP/+/U+5Cwz43YXaCv7YLn9sE2i7fElt2uSxU2ARaSwi0RWvgUuArZ7an1JK1ZYnjwBbAh+JSMV+3jHGLPfg/pRSqlY8FoDGmN1Ab09tXyml6kq7wSilApYGoFIqYGkAKqUClgagUipgaQAqpQKWBqBSKmBpACqlApYGoFIqYGkAKqUClgagUipgaQAqpQKWBqBSKmBpACqlApYGoFIqYGkAKqUClgagUipgaQAqpQKWBqBSKmBpACqlApYGoFIqYGkAKqUClgagUipgaQAqpQKWBqBSKmBpACqlApYGoFIqYGkAKqUClgagUipgaQAqpQKWBqBSKmBpACqlApYGoFIqYGkAKqUClgagUipgaQAqpQKWBqBSKmBpACqlApYGoFIqYGkAKqUClgagUipgaQAqpQKWBqBSKmBpACqlApYGoFIqYHk8AEUkWEQ2iMi/PL0vpZSqjfo4AnwYSK+H/SilVK14NABFpC1wBfCaJ/ejlFJnI8TD218ETASiT7eCiNwH3AeQkJBARkbGCe/n5OR4rjov8sd2+WObQNvlS2rbJo8FoIhcCRw2xqwTkQtOt54xZgmwBKB///4mMTHxlHWqW+YP/LFd/tgm0Hb5ktq0yZOnwEOBq0UkA3gXGCUif/Pg/pRSqlY8FoDGmCnGmLbGmETgFuBrY8ztntqfUkrVlvYDVEoFLE/fBAHAGPMt8G197EsppVylR4BKqYClAaiUClgagEqpgKUBqJQKWBqASqmApQGolApYGoBKqYClAaiUClgagEqpgKUBqJQKWBqASqmApQGolApYGoBK1bPy8nIsFou3y1DU02wwSgW60tJSjh07RnZ2NgcPHqRZs2YMGTLE22UFPA1ApTykqKiIQ4cOsXfvXnJzcwEIDQ0lODgYm83m3eIUoAGolFuVlJRw6NAhMjIyKkMvIiKCmJgYRASAsrIyL1aoqtIAVKqOjDEcPXqUX375hSNHjiAihIeHnxB6qmHSAFTqLNntdg4fPkx6ejq5ubkaej5IA1CpWrLb7ezfv5/09HSKiooIDw8nNjZWg88HaQAqVQuFhYWsX7+enJwcIiMjiY2N9XZJqg40AJVygTGGjIwMtmzZQlBQkB7x+QkNQKXOwGKxsHLlSg4fPkx0dDQhIfrPxl/oT1KpGmRlZbF9+3ZERI/6/JAGoFLVMMawc+dOtm7dSmRkJJGRkd4uSXmABqBSJ7Hb7Wzbto2dO3cSExNDeXm5t0tSHqKTIShVRXl5OevWrWPnzp3ExsYSHBzs9n388MMPHDt2zO3bVbWnAaiUk8ViYfXq1WRlZREXF0dQkPv/eXz++ec888wzLF261O3bVrV32lNgEXkBMKd73xjzkEcqUsoLysrKWLlyJfn5+R672fHJJ5+wcOFC+vXrxwMPPOD27avaq+lP3FpgHRAB9AV2Or9SgDCPV6ZUPbHZbPz0008UFBR4bCjbhx9+yMKFCxkyZAjjpzzBV1lwrEjnBPS20x4BGmP+CiAivweGGWNszu9fAVbUT3lKeVZ5eTlr167l2LFjxMTEeGQf7777Lq+++irDhw9n2rRpfJFh4x+7ykhau4/fnd/RI/tUrnHlLnAc0ASouGob5VymlE8zxrBp0yYOHDjgsdPet956izfeeIORI0fy2GOPERISwtBW5YSFhnNj/3Zu35+qHVcCcDawQUS+AQQYATzpyaKU8jRjDNu2bSMzM9Mj4WeMYenSpbz11ltcfPHFTJo0qfKOclSYcEXHcJo21itJ3nbGADTGLBWRL4BBzkWTjDEHPVuWUp7166+/8ssvv3gs/P785z+zbNkyLr/8csaPH++R7jSq7s54n18cvx0XAb2NMR8DYSIy0OOVKeUh+/btY8uWLcTExLi9q4sxhpdeeolly5Zx9dVXM2HCBA2/BsyVn/5LwBBgrPP7AuBFj1WklAcdP36c9evXEx0d7fZgstvtLF68mA8++IAxY8Ywbtw4j/QlVO7jyjXAQcaYviKyAcAYc1xE9OKF8jklJSWsXr2asLAwQkND3bptu93OggUL+Oyzz7j55pv53e9+pxMn+ABXAtAqIsE4O0WLSHPA7tGqlHIzm81GWloaNpuN6Ohot267vLyc5557jv/85z/ccccd3HXXXRp+PsKV4/PngY+AFiLyDPADMMujVSnlRsYYNm/ezPHjx4mKinLrtsvLy5k1axb/+c9/uOuuu/jtb3+r4edDXLkL/LaIrAMuxNEN5lpjTLrHK1PKTXbv3k1GRgZxcXFuDSer1crMmTP5/vvvue+++xg7duyZP6QalDMGoIg8D7xrjNEbH8rnHDlyhM2bN7t9iJvFYmHGjBmsXLmSP/7xj9xwww1u27aqP66cAq8DHheRXSIyT0T6e7oopdyhuLiYtLQ0GjVq5NY7vmVlZUybNo2VK1fy8MMPa/j5sDMGoDHmr8aY0cAAYAcwR0R2erwypeqgvLycNWvWYIwhPDzcbdstLS3lscceY82aNUyYMIFrr73WbdtW9a82M0J3AroCHQC9BqgarIphbsePH3frBAclJSVMmTKFLVu2MGnSJC699FK3bVt5hyvXAJ8DrgN2Ae8CTxtjcl34XATwPRDu3M8HxpjpdapWKRfs37+fX3/91a3D3AoLC5k8eTLp6elMnTqVUaNGuWW7yrtqDEDnMLgCYIgx5mgtt10GjDLGFIpIKPCDiHxhjFl9lrUqdUYFBQWsW7eO6Ohot43CKCgo4PHHH2fnzp088cQTnH/++W7ZrvK+Gn9DjDEGuOkswg/jUOj8NtT5ddoZppWqK6vVSlpaGsHBwW4b6ZGXl8fkyZPZtWsXM2bM0PDzM678iVwvIgPOZuMiEiwiG4HDwJfGmJ/OZjtKnUlFZ+fCwkIaN27slm0eP36c1NRUMjMzmTlzJkOHDnXLdlXD4dJYYOA2EckEinB0hjbGmF5n+qAxphxIEZFY4CMR6WGM2Vp1HRG5D7gPICEhgYyMjBO2kZOT40KJvscf2+XNNuXk5LB3714aNWqExVL3qeZzcnKYPHkyhw4d4sknnyQlJcUt2wXHsLzS0tJTftfrm/4OuhaAdb7VZYzJdU6oehmw9aT3lgBLAPr3728SExNP+Xx1y/yBP7bLG23Ky8tj06ZNREdHExJS90ddHzlyhIkTJ3L06FFmz55Nt27dCAtz3/wfxhgiIiIaxM+/IdTgbrVpkyv9ADOBdjhuaGQCxa58TkSaO4/8EJFI4GJgu8uVKeWCiut+oaGhbgm/gwcPMm7cOI4dO8bcuXNJSUmpe5GqwXKlG8x0oD/QBViK42bG34AzXRBpDfzVOZNMEPCeMeZfdStXqf+puO5XVFREbGxsnbe3f/9+UlNTKSoqYt68eSQnJ9e9SNWgufIn8zqgD7AewBizX0TOOJ+QMWaz83NKecTevXvJzMwkLq7uz+jat28fqampWCwW5s+fT+fOnd1QoWroXLkLbHF2h6mYD9A9t9iUqoO8vDw2btxIkyZN6tzZOSMjg3HjxmG12rh+wnO0TjzXTVWqhs6VAHxPRF4FYkXkXuAr4M+eLUup03Pndb9du3bxyCOPAHD9hOf4pqgtK7Kt7ihT+QBX5gOcJyIXA/k4rgM+YYz50uOVKVUNd173++WXX3j00UcJCwtjwYIFxLZsS7NsK8MT3Dtdvmq4XLkJ0hj42hjzpYh0AbqISKgxRv9Mqnrnrut+6enpTJw4kcaNGzN//nwSEhIAGJ2kj7sJJK6cAn8PhItIArAcuAP4iyeLUqo67rrut3XrViZMmECTJk1YtGhRZfipwONKAIoxphi4HnjZGHMj0N2zZSl1IqvVypo1a+p83W/jxo08+uijxMfHs2jRIlq1auXGKpWvcSkARWQIcBvwmXOZPulZ1Zuq43wbNWp01ttZt24dkydPpmXLlixcuJDmzZu7sUrli1wJwHHAFOAjY8w2ETkH+MajVSlVxd69e9m7d2+dJjdNS0tjypQpJCQksHDhQuLj491YofJVrtwF/g74TkSaiEi0MWY38JDnS1Pqf9f9oqOjz/q638qVK3nyySdJTExk7ty5bp0lurZsNhvFxcUawA2EK3eB++MYAhft+FZygd8aY9Z5uDYV4Nxx3e+7777j6aef5txzz+W5555z+0PRXWW32ykoKCAoKIhevXr55SQEvsiV36o3gD8YY1YAiMgwHIF4xumwlDpbxhg2bdpEYWHhWff3++9//8usWbNITk5mzpw5bpsnsDaMMRQVFWGz2UhMTKRr165ERETUex2qeq4EYHlF+AEYY34QEZsHa1KKzMxM9u7de9b9/ZYvX87cuXPp0aMHs2fPJjIy0s0VnllZWRnFxcU0a9aMnj17umXCBuVepw1AEenrfPmdcyjcMhzjgW8GvvV8aSpQ5ebmsmnTprPu7/fZZ58xf/58evXuwwW/m44tuH6PuGw2G4WFhURGRjJo0CBat27t1oeyK/ep6Qhw/knfV32imz7bQ3mExWIhLS2NsLCwM173K7AYVjiHrkWHOQLmn//8J4sXL2bgwIGc99vH+WhPEGHh1noZ4WG32yksdDwGp3v37iQlJblljkLlOaf96RhjRtZnIUoZY9iwYQOlpaU0adLkhPeqC7sV2Vbe2+EYkTk6KYwPPviAF198kfPOO4/p06dTRiihYZ4f22uMobi4GKvVSvv27UlOTvbKKbeqPVfuAsfgOPob4Vz0HfCUMSbPk4WpwLN7926ys7MJaRzL53ssNYYdUBlswxNCWbZsGUuWLGHEiBE8/vjjhIaGEobnx/ZaLBaKioqIj4+nZ8+ebpmbUNUfV+8CbwVucn5/B467wNd7qigVeI4dO8aWLVuIiYnh33ttNYZdhegwYXRSGG+++SZLly5l1KhRPPbYYwQHe36gUnl5OQUFBURERDBw4EDatGmj1/l8kCsB2NEYM6bK9zOcj7pUyi1KS0tJS0sjIiKC4OBghic4BihVF3ZVGWNYunQpb731FpdccgkTJ070ePgZYygoKMAYQ3JyMh07dtTrfD7MlZ9ciYgMM8b8ACAiQ4ESz5alAoXdbmfdunVYrdbKTsrVhd3JjDG8+uqr/P3vf+eKK64gNTWVoCBXRnaevZKSEkpLS2nbti3du3ev07hk1TC4EoD3A286rwUCHAf+z3MlqUCyY8cOdmcfZkthY4aHm8prfjUxxvDiiy/y4Ycfcs011/DQQw95NPzKy8vJzc0lOjqaAQMGEB8fr6e7fsKVscCbgN4i0sT5fb7Hq1IB4cCBA2zfvp3NBY14f6cV5Mw3Lex2O4sXL+aTTz7hhhtu4A9/+IPHwqhi+JqIkJKSQvv27T1+lKnql8sXLzT4lDsVFhaydu1aGjduzIjGoUiQnLG7Snl5OfPnz+eLL75g7Nix3HvvvR4Jv6rdWhITE4mKitKxu35Kr96qemez2UhLS0NECAsLc6m7Snl5OXPmzOHLL7/kN7/5DXfeeadHws9qtVJYWEhcXBy9e/cmLi6OjIwMt+9HNQwagKpeVUxump+f7/LYWJvNxqxZs/jmm2+4++67uf32291eV8XpbkhICH379qVdu3Z6uhsAXOkI3QIYCrTBcfd3K7DWGGP3cG3KD+3Zs4eMjAyXOwxbrVaefvppVqxYwf3338/NN9/s9pqKi4spKysjKSmJ5ORkwsPD3b4P1TDVNBnCSGAy0BTYABwGIoBrgY4i8gEwX68NKlcdO3aMzZs3uzzJgcVi4cknn2TVqlU88MADjBkz5oyfqQ2bzUZBQQExMTEMHjyYpk2bunX7quGr6QhwNHCvMWbvyW+ISAhwJXAx8KGHalN+pKSkhJ9++omIiAiXOg6XlZUxbdo01qxZwyOPPMLVV1/ttloqOjOLCL169SIpKUlPdwNUTZMhPFrDezbgn54oSPmf8vJy1qxZg81mq+zsXN3kBhVKSkqYOnVq5RPcRo8e7bZaKuboS0hIoEePHtqZOcCd9s+eiAwSkU0iUigiq0SkW30WpvyDMYatW7dy7NgxTFhjPt9jqQy/93ZYWZFtPWH94uJiJk+ezKZNm5gyZYrbws9ut5OXl4cxhsGDBzNgwAANP1XjKfCLwAQcD0a/GlgIXFofRSn/sW/fPnbt2kVsbCzLM/83yUF1kxsUFhYyefJk0tPTmTp1KqNGjXJLDRU3OTp27EjXrl0JC/P83IDKN9QUgEHGmC+dr98XkSn1UZDyH8ePH2fDhg1ER0cTFBR0QuidPN43Pz+fiRMnsmvXLqZPn86IESNOt1mXVczYEh0drTc5VLVqCsBYEbn+dN8bY/7hubKUr6u46REWFkZoqCP4TjfJQV5eHhMmTCAzM5OnnnqKIUOG1GnfFSM5bDYbycnJdOrUqV6myFK+p6YA/A646jTfG0ADUFWr4qaHxWI5ZWbnkx07dowJEyaQnZ3NzJkzGThwYJ32XdG1JS4ujr59+55x/yqw1XQX+K76LET5h6o3Pc70APKjR48yfvx4Dh8+zLPPPkvfvn1rXP9M+y0qKqK8vJyePXtyzjnnaNcWdUY1dYS+HXjndCM+RKQj0LpinkClwPE4y127dhEXF1djZ+fDhw+TmprKsWPHmDNnDr16nf1jpiuO+uLj4+nTp4/XHn6ufE9Np8DxwAYRWQesA47gGAnSCTgfOIpjpIhSABQVFbFz584zjvQ4ePAgqamp5OfnM3fuXLp3735W+6t61KcdmtXZqOkUeLGI/AkYhWMscC8cY4HTgTuqGyGiAldxcTF79uw5ZaTHyR2es7OzGT9+PEVFRcybN4+uXbue1f7Ky8vJz8+nadOm9O3bV4/61FmpcUySMaYc+NL5pVS1rFYrP/30E3a7nYiIEx9CXvVpbj2CDzJ+/HgsFgsLFy6kU6dOZ7W/oqIibDYbPXr0oGPHjnrUp85aTdcAQ4C7cUx+kOBcnA18DLxujLGe5qMqgFQ8yzc/P7/aZ+FW9P3rYM1i3PgJACxatIikpKRa78tut5Ofn0+TJk3o16/fGW+yKHUmNR0BvgXkAjOALOeytjieB/I3wP3zEimfs2PHDrKzs4mNjcVqPfVvYnSY0Ll8LxMmTiAkJIQFCxbQvn37Wu+ntLSUkpISunTpQpcuXbRfn3KLmgKwnzGm80nLsoDVIvKLB2tSPiI7O5v09HRiYmJOuelRce2vdfEepk95lIiICBYsWEDbtm1rtQ9jDPn5+URERDBixAji4+Pd2QQV4GoKwGMiciPwYUVXGBEJAm7E8WQ4FcByc3NZu3YtUVFR1V6DW5Ft5a1vtnL8gyeIbRLFwoULad26da32YbFYKCoqon379vTs2VPH8Cq3qykAbwHmAC+JSEXgxQLfON9TAaqkpITVq1efMMytQsWRX+ThdI69P42mcbEsWriAli1burx9YwyFhYWICAMHDqRNmzb6GErlETV1g8nAeZ1PROKdy3Jc3bCItAPeBFriGDq3xBizuC7FKu+z2Wz89NNPJzzIvKoV2Vbe/HIdx/7xFK1aNGf+/Pk0b97c5e1XdG9p1qwZ/fr10ymrlEe59FCkk4NPRC6uMlPM6diA8caY9SISDawTkS+NMT+fZa3Kyyru+Obm5p72gUZRBzeR8+EMWrdqxaKFC2o1A0tJSQllZWV0796dTp06afcW5XFn+xv2+plWMMYcMMasd74uwNGBOqHmT6mGbPv27WRlZZ22+0laWhozp0+lfdsEnl+8yOXwM8aQl5dHUFAQI0aMoHPnzhp+ql7U1A/wk9O9hWOYnMtEJBHoA/xUm8+phmPfvn2kp6cTGxtb7fW4H374gRkzZpCUlMTcuXNd7qNns9nIz8+nXbt29O7dW290qHpV0ynwcOB2oPCk5QK4PGeRiETheHDSuOqeICci9wH3ASQkJJzyEOqcHJcvO/oUX2pXUVERv/76K5GRkdhstlPe//7775k9ezadOnVi1qxZREZGYrFYzrjdsrIy7HY7HTp0oGnTpuzfv98T5deZL/2sasMf21XbNtUUgKuBYmPMdye/ISI7XNm4iITiCL+3TzeBqjFmCbAEoH///iYxMfGUdapb5g98oV1FRUVs27aN8PDwU4a5AXz11Vc8++yzdOvWjaeeesql5/1WnPJGR0czYMAAn5izzxd+VmfDH9tVmzbVdBf48hreO+N85eI4T3odSDfGLHC5ItVgWCwWVq9ejTGm2vBbvnw5zz33HL1792bWrFkujc6wWq0UFBSQlJREz549XXpEplKe4snfvqHAHcAWEdnoXPaYMeZzD+5TuUnFrM6FhYXVXs/717/+xYIFC+jXrx9PP/00ERERZzztrZi6asCAAbRt21b79imvO2MAikgBjn58VeUBa3F0c9ld3eecE6Xqb7gPMsawefNmjhw5Um34ffTRRzz//PMMGjSIp556irCwMAoshm8zy7mggznlOb8Vw9mioqJ85pRXBQZXjgAX4RgD/A6OQLsF6AisB94ALvBQbcpLdu7cSUZGRrV3fN977z1efvllhg4dyhNPPEEZoXy1x0KZzfDxLjvBIdYTHnxUcZe3Q4cO9OrV65SRI0p5kysBeLUxpneV75eIyEZjzCQRecxThSnvyMrKYtu2bdXO6vz222/z2muvcf755/PwxKl8lW0os1n4eJeNazqGMqZj0AnP+S0uLsZqtdKvXz/at2+vp7yqwXGlt2mxiNwkIkHOr5uAUud7J58aKx+Wk5PDunXriIqKOuGGhjGGv/71r7z22mtceOGFTJs2jVWHjHOiU+GmLqFc1CGUSzsEEx0mlae8ISEhXHDBBXTo0EHDTzVIrhwB3gYsBl5yfr8KuF1EIoEHPFWYql+FhYWsXr2a8PDwE05TjTG8/vrrvP3221x22WVMmDCB4OBghic4/nZWTHUPYLH8byxvmzZt6NOnj3ZsVg3aGQPQeZPjqtO8rU+E8wOlpaWsXLkS4ITuLsYYXnnlFd577z2uvPJKHnnkkcohatU95NxqtVJcXEz37t0599xz9ahPNXhnPAUWkbYi8pGIHHZ+fSgitZvVUjVYFbO7lJaW0rhx48rlxhheeOEF3nvvPa677jpSU1NrHJ9bWFiIMYahQ4fSuXNnDT/lE1y5BrgU+ARo4/z61LlM+Ti73c66des4fvz4CVNb2e12FixYwEcffcSNN97Igw8+eEKgFVgMn++xUGAxGGPIzc0lKiqKzp0712rqK6W8zZVrgM2NMVUD7y8iMs5D9ah6Yoxh27Zt7N+//4TuLuXl5cybN4/ly5dz6623cs8991S+VzHZqaPLiw17uZ3zmhZXjurIysqqaZdKNTiuHAHmiMjtIhLs/Lod8L9R1AFm165d7Ny584TneZSXlzN79myWL1/OnXfeeUL4QdVHXArXnyOkxJTSt29fUlJSdEib8kmu/Nb+FngBWIij28tK4C5PFqU8Kzs7my1bthATE1N5Xc9mszFz5ky+++477rnnHm677bZTPjc8IRQMpMSUEtcolEGDRtRqwlOlGhpX7gJnAlfXQy2qHuTk5FQ+zKiir5/FYuHpp5/mhx9+4Pe//z033XRTtZ+NCoXzmhbTtGlTBgwYUO1zgJXyJTVNiPoCNXR0NsY85JGKlMfk5+ezatUqIiIiKvv6WSwWpk+fzurVq3nwwQe5/vrrT/lcgcXwnz1llJWVccfg9pzXr7c+l1f5hZqOANfWWxXK44qLi1m5ciVBQUGEh4cDjv5/06ZNY+3ataSmpnLVVVdRYDF8lWmlrNzxty882HF6/FkmQAh9S2IYruGn/ERN8wH+9eRlItLKGHPQsyUpd6uY189msxEVFQU4HkA0depUNm7cyMSJE7n88sspsBj+vKWUzUfsJ3x+dHu4d0gCjRpFclP/dt5oglIeUdtbd58DfT1RiPIMm81GWloaBQUFlVNbFRUVMWXKFLZt28aUKVO4+OKLTwi/bk2DaN9EKCu10KRxOBOvG0RCs1jvNkQpD6htAGr3fh9it9vZsGEDR48erQy/wsJCJk6cyI4dO5g2bRr9zjufj3Za2Jlr4+ccQ6/mQfy2WyimtIC2bdvSp08f7eKi/FZtf7P/7JEqlNtVdHTOysqq7Oicn5/Po48+yu7du5kxYwa9Bw494ZS3V/Mg/q9LEKa0gG7duumQNuX3ahWAxpiXzryWagh27tzJr7/+WtnROTc3lwkTJrB3714uv/8JspoN4Pv1JfySa+gcKyTHBzO0hY1Qu5UBgwfTunVrbzdBKY/Tcxs/lJmZydatWys7Oh87dozx48ezf/9+rnlwBmtCe7E543+Pt0yOD+bClmWEh4czePAwl5/pq5Sv0wD0MwcOHGD9+vU0adKE4OBgjhw5wvjx4zly5AizZ8+m1bm9Kfq5jFaNhbBgITwY+scUExfXjAEDBlT79Del/JUGoB/JyckhLS2Nxo0bExISwqFDh0hNTeX48ePMmTOHpK49+fOWUn4+ZqdH81AubR9MXl4eiYmJ9O6tnZtV4NEA9BMVozzCw8MJCwvjwIEDpKamUlBQwLx582jXKbnyhkev5kEMau6Ytr5nz5506tRJb3aogKQB6AeKiooqR3lERESQnZ1NamoqxcUlXPbgbD7MSyRvVTFHSxx3eu841xBqL9ObHSrgaQD6uIrp7CtGeaT/msmECalYrTY6/eYZ1pokyHMMa2vVWBibZCM6LJTBg0cQGxvr3eKV8jINQB9mtVpZvXo1JSUlNGnShLRtu5g6aQJ2oOUtz1Ic04HmkUKTMAgWww0drLRuGsOgQYN0Jhel0AD0WeXl5aSlpZGXl0dMTAyb0ncydeIETFAIrW55hpYJ7WgWCXd1j6BlI8jNzSUhIYG+ffvqw8mVctIA9EF2u53169dz5MgRYmJi2LFjB5MfnYAJjqTbnbM4r1tbrjgnnOgwwWazkZubT5cuXUhOTq7xwUZKBRoNQB9jjGHLli2VQ9zWbv6ZxydPJCgymiH3zuIPwxNpHeUIubKyMkpKSujXrx/t27fXO71KnUQPB3yIMYb09HR27dpFbGwsP63fzJSJj2KPiCH+ltnsk5ZsOOIY4VFcXIzFYmHo0KF06NBBw0+paugRoA/ZtWsX27dvJzY2lg0bNjDtsceQqOa0vOUZWjWPp3+rYIYnhFJQUEBYWBjDhg2jSZMm3i5bqQZLA9BHZGZmVj7I6NPv1rB41hOExbWi+c3PkJzQlAf7RhIV6ugQHRMTw+DBg3VYm1JnoAHoA/bv38/69euJjo4mLS2Nxc88QUh8O5rfPJPgRjEkx4fQOMSQm5tHmzZt6Nevn87hp5QL9F9JA3f48GHS0tKIiopi1apVzHjqKSJbJpF461M0j4mma7NgRrYNIjc3l86dO9OtWze906uUizQAG7Djx4+zevVqIiMj+ddXK3hh3jOEtTqX+JueIrpJFE8Oa4TFYqGoqICUlBSSkpL0ZodStaAB2EDl5+ezcuVKwsLC+PfX3/H83DmEJ3SlxQ1PEhnZiHt6hFNaWkpZWRmDdUyvUmdFA7ABKiws5Mcff0RE+OLLr3l+4TzC2/WkxZgnaBETwfh+kURTjN0exIgRI4iLi/N2yUr5JA3ABqakpIQff/wRu93Of//7X55fuJCIxD40v34qrZpE8vjgCCgrJKJRI4YMGULjxo29XbJSPksDsAEpKytj5cqVWK1WPv3i3yx56U9EdhxA82unEBYWxri+4dhL8omPj2fgwIGVDzhXSp0dDcAGwmKxsGrVKoqKivjiiy9Y8sorRHYeQvOrJxISEsqj/cKIsOaR0K6dPqpSKTfRf0UNQMXDy/Py8vj00095/fXX6dBnBBGXpBIRHsLve4XSTAq0m4tSbqYB6GXl5eWsWbOGI0eO8M9//pM333yT1n1GYi4aRynBxAZDi6AievXqzTnnnKPdXJRyIw1AL6qY1urgwYO8//77LFu2jHMHX0zZ8AeQoGBCg+CWJBuDBg2iTZs23i5XKb+jAeglxhg2btzIvn37WLZsGR988AEjLrmSvX3uQwgiNAgmpxiuvXAY8fHx3i5XKb+kAegFxhj279/PwYMHeeutt/j4448ZNfpadve8G4Mg2HmkVxA3XjZCZ3NRyoM8djVdRN4QkcMistVT+/BFxhi2b9/OwYMHWbp0KR9//DFXXHcTmb0c4Qcwsm0od10zSsNPKQ/z5O3EvwCXeXD7PscYw86dO9m6dSuvvPIKn332GZdcdyvbOt+BzTjCr1NsELNuG6YPLVKqHnjsFNgY872IJHpq+75oz549bNq0iVdeeYWvv/6auOG3saPz2Mr3G4cKy/5wAc2baPgpVR+8fg1QRO4D7gNISEggIyPjhPdzcnK8UJX75eTksHv3bp5bsJi1q38k9vz/o8ngG53v2okLD2LmZR0oOnaIomNeLfWs+cvP6mTaLt9R2zZ5PQCNMUuAJQD9+/c3iYmJp6xT3TJfkp2dza5du5g1bxGb1qwibtQ9NBlwrfNdO1MvaM09l/bziz5+vv6zOh1tl++oTZu8HoD+7sCBA3z01Y9Me2YuuTvX0vTi+4nueyUAv+lo5d7L+tGuXTsvV6lUYNIA9KDDhw/z1mcrePKZZynJ2ETTSx8gOuUygoCHutsYe8kQWrZs6e0ylQpYnuwGswxYBXQRkSwRudtT+2qIcnJy+PTfXzPj6ZmUZG4mfvQ4olMuo3EwjO8Nl/Q7V8NPKS/z5F3gsWdeyz8dP36cr776iinTn6Z433aaXZlKVLcLuD/ZTp/W4Zx33nkcPXrU22UqFfB0WhE3y8vL49///jeTpj7BkcwdNLt6Io27XcDD3W0MbB/F8OHDiYqK8naZSin0GqBb5efn88UXX5A6+XEO7Muk+bVTaHTuYOLC7PRPckxiGhYW5u0ylVJOGoBuUlhYyGeffcb4SY9xYH82La5/nMiO/RHsjD+vKUOGDCY4ONjbZSqlqtAAdIOioiI++eQTHpk4hSOHDtHihulEJqYg2Hni/ObceslAncRUqQZIA7COSkpK+Pjjj3l4/ERycnJoceN0Itr3Igg7S65P5MIBPfyig7NS/kgDsA5KS0v5xz/+wSPjJ5BzPI8WNz1FRNtugJ1nL++g4adUA6cBeJbKysr44IMPeHDcePIKi2h580zC23QB7My/uhNjzkv2dolKqTPQADwLFouF999/nwceGkdBiYWWtzxDeKtOgJ3nr+/K1QPP9XaJSikXaADWktVq5d133+XBh8dRWFZOy7GzCGuRBMCEkUkafkr5EA3AWrBarbzzzjv8/oGHKTNCy7HPEta8AwBzr+vKjYM6erlCpVRtaN8MF9lsNh6e8zq//f2DWAim1djZleE3//puGn5K+SANQBeUl5fz0mt/4dWZE5DQCFreOofQ+LYAPHhBEmMGJnm5QqXU2dBT4DMoLy/njTfeYPy4cQRFRNNy7LOExDQjXOBv9w5kwDnNvV2iUuosaQDWwG6389prr/HAQ+OgcVNa3jKLkCZNeWRgLA9cc54ObVPKx2kAnobdbufVV1/lwYfHIdEtaDl2FiFRTYkIFh66bph2cFbKD+g1wGrY7XYemLGQPz40jqCY1rS69VlCopoC8PId/vHsDqWUHgGewhjDHZPm8M7CJwiNb0/Lm58muFEMArxxZ39GdtVZnJXyFxqAVRhjuO+x2byzYBphLc+hxU1PExzRiKS4UD584AKaNta5/JTyJxqATsYYnnr2OV6b8zjhrTvT4qYZBIVH8pv+rXjqhgHeLk8p5QEagDjCb86cOTz5+FTC23ajxZgnCAqP5PfntWXS1SneLk8p5SEBfxPEGMOsWbOY8thjRLTvQYsbniQovBG39m2l4aeUnwvoADTGMGPGDB5//HEiEvvSfMx0gsIiOLd5JLNu6u/t8pRSHhawp8DGGKZNm8YzzzxDZKeBNL9mChISSpDA3+8f5u3ylFL1IGADcMqUKcyZM4dGnc+j2dWPIsGhALzxfwP0bq9SASIgA/DuPzzMGy8/T6PkETS7IhUJdvxv+MudA7igawsvV6eUqi8BFYDGGB5++GHeePkFGncfSfzocUiQYzzv46O7avipWrFarWRlZVFaWurtUs6KzWYjPT3d22W4ld1ux2q1Ehoa6tL6AROAxhiuve1uPlm2lKhel9D00j9Wht8Lt6RwVUqClytUviYrK4vo6GgSExN9cnhkWVkZ4eHh3i7DbYwxHDx4kKysLJKSXJuiLiAC0BhDv8tvZsO/3yeqz2iaXnw/IkF0b9mIzx4Z6e3ylI8qLS312fDzRyJCXFwce/bscfkzfh+AdrudxGHXsm/Vp0T3u5q4C+9FROgYH6Hhp+pMw69hqe3Pw68D0G63c87Qq9i3+nOaDBpD7Pl3IiL0bhPFxw+d7+3ylFJe5rcBWF5eTq+RV5G5+gtizruFmGG3ISKM7t6Cl+7Qsb1KKT8dCWK1Wmnb/yJ+XvEFMcNuI3b47YgIj4/uquGn/M6WLVvo0KEDL7/8cr3tc/ny5XTp0oVOnToxe/bsatdZvHgxPXr0oHv37ixatKhy+b59+xg5ciTdunWje/fuLF68GHBcUx04cCC9e/eme/fuTJ8+/YTtlZeX06dPH6688kr3NcQY02C++vXrZ062Z8+eU5bVpKyszDTrPtQAJvaCO02HSf8yHSb9y8z+bFuttuNptW2XL/DHNhlz+nb9/PPP9VtIDVauXGkGDx5cq8+Ulpae1b5sNps555xzzK5du0xZWZnp1auX2bbtxH9fW7ZsMd27dzdFRUXGarWaCy+80OzcudMYY8z+/fvNunXrjDHG5Ofnm3PPPdds27bN2O12U1BQYIwxxmKxmIEDB5pVq1ZVbnP+/Plm7Nix5oorrqixTdX9XIC1pprM8asjwLKyMtr3vYCj234kbtS9xAy6AYAhibFMGt3Ny9Up5TktWrRg27Zt9bKvtLQ0OnXqxDnnnENYWBi33HILH3/88QnrpKenM2jQIBo1akRISAjnn38+//jHPwBo3bo1ffv2BSA6Oprk5GSys7MREaKiogDHWZzVaq28qZGVlcVnn33GPffc49a2+E0AlpSU0KbXMA5tW0XTS/5AkwHXAHDnkPYsu3+ol6tTyrMmT55MWVkZmZmZZ72N4cOHk5KScsrXV199dcJ62dnZtGvXrvL7tm3bkp2dfcI6PXr0YMWKFeTk5FBcXMznn3/Ovn37TtlnRkYGGzZsYNCgQYDjNDclJYUWLVpw8cUXVy4fN24czz33HEFB7o0sv7gJUlRURPuU4Rz7dSNNL3uI6N6XAJB6USceuqiLl6tT6n+OFVl4f+0+buzfzm1jzr/44guKioq44oor2LZtGx06dADgnXfeYfny5cTExFBUVMSf//xn3nzzTdavX48xhoiICObNm1e5nRUrVrilHoDk5GQmTZrEJZdcQuPGjUlJSTnlKYqFhYWMGTOGRYsW0aRJEwCCg4PZuHEjubm5XHfddWzdupWMjAxatGhBv379+Pbbb91WI/hBABYUFNCu91DyMrYRf8UjRPUYBcDo7i00/FSD8/7afTz7xXYAfnd+xzpvr7S0lEmTJvHJJ5+wdOlStm7dyujRo/nhhx/49ttvefPNNwHHsLe0tDS2bNnCCy+8ADj+7VQ1fPjwU5YBzJs3j4suuqjy+4SEhBOO5rKyskhIOHUk1d13383dd98NwGOPPUbbtm0r37NarYwZM4bbbruN66+//pTPxsbGMnLkSJYvX05OTg6ffPIJn3/+OaWlpeTn53P77bfzt7/9rTb/q6pX3YVBb33V9iZIbm6uadS2q0GCTLOrHq284THp/Q2n/UxD4Y83DPyxTca49yZITmGZeeXbX01OYVkdq3KYOnWqmTt3rjHGmPfff9/ccccdxhhj7rnnHrN9+3Zjt9tNamqqueeee8x9991nMjMzKz97tjdBrFarSUpKMrt37668CbJ169ZT1jt06JAxxpjMzEzTpUsXc/z4cWOMMXa73dxxxx3m4YcfPmH9w4cPV65TXFxshg0bZj799NMT1vnmm2/0JgjA8ePHaZU8gOL9O2l2zSQad3N0bL6oSzNm35Di3eKUOo2mjcP43fkd3XL6u2PHDr788kvGjRsHQM+ePdm6dSvgGAQQGhqKiDB9+nTKy8spLS0lJOR/J33l5eVntd+QkBD+9Kc/cemll5KcnMxNN91E9+7dARg9ejT79+8HYMyYMXTr1o2rrrqKF198kdjYWAB+/PFH3nrrLb7++uvK64yff/45Bw4cYOTIkfTq1YsBAwZw8cUXu7fLSzXEEY4NQ//+/c3atWtPWJaRkUFiYuIJy44ePUq7noMpPZJJ82un0KiT40KpL3Vyrq5dvs4f2wSnb1d6ejrJycn1X5AL0tPTmTFjBq1bt6a4uJgbbriBNm3aMHPmTJo3b05BQQGzZ8+mZUv/esxrWVkZu3fvPuXnIiLrjDGnTPPuc9cADx8+TGKvQZQezabF9dOIPKcf4JjO6p4Rdb+mopQ/SE5O5t133z1l+bJlyypfl5WV1WdJDZJPBeCBAwfolDKY0mMHaXHDdCITUwB49roejB3UwbvFKaV8js8EYFZWFuf0HoSt4BgtbpxBRPueAPx+RJKGn1LqrHj0JoiIXCYiO0TkVxGZfLbbyczMJKnnAGyFubS46enK8NMRHkqpuvBYAIpIMPAicDnQDRgrIrVOq8zMTDr2GoC9pICWt8wkoq3j4mZiXISO8FBK1YknjwAHAr8aY3YbYyzAu8A1tdnAjh07uPDKMRhLKS3HziK8dWcAbumfwLeTLnR/xUrVUkPqRaFq//PwZAAmAFUH/2U5l7nEZrPR67xRGLuNlrc+S1hLxx3e1Is6aT8/1SBERESQk5OjIdhAGGM4fvw4ERERLn/G6zdBROQ+4D5wDLHJyMiofC/usocIimxCWLP2ANzVL56rO4WfsI6vysnJ8XYJbuePbYLTt8sYw6FDhzhw4EA9V+Qedrvd7ZMLeJvNZiMmJsbljPBkAGYD7ap839a57ATGmCXAEnB0hK7a4bRlp57klTn+uvrjk9v8sdOwP7YJ/LNd/thxvbZt8mQArgHOFZEkHMF3C3BrbTawacZov/whKaUaBo8FoDHGJiIPAP8GgoE3jDH1M2OjUkq5wKPXAI0xnwOfe3IfSil1thrUZAgicgQ4eUrbZsBRL5Tjaf7YLn9sE2i7fMnp2tTBGNP85IUNKgCrIyJrq5vFwdf5Y7v8sU2g7fIltW2Tf90DV0qpWtAAVEoFLF8IwCXeLsBD/LFd/tgm0Hb5klq1qcFfA1RKKU/xhSNApZTyiAYbgO6aS7ChEZE3ROSwiGz1di3uIiLtROQbEflZRLaJyMPerskdRCRCRNJEZJOzXTO8XZO7iEiwiGwQkX95uxZ3EZEMEdkiIhtFZO2ZP9FAT4Gdcwn+AlyMYxaZNcBYY8zPXi3MDURkBFAIvGmM6eHtetxBRFoDrY0x60UkGlgHXOvrPy8REaCxMaZQREKBH4CHjTGrvVxanYlIKtAfaGKM8eyj1+qJiGQA/Y0xLvdtbKhHgHWeS7ChMsZ8Dxzzdh3uZIw5YIxZ73xdAKRTi6nPGirnI2ULnd+GOr8a3hFDLYlIW+AK4DVv1+JtDTUA6zSXoPIeEUkE+gA/ebkUt3CeKm4EDgNfGmP8oV2LgImA3ct1uJsB/iMi65zT7J1RQw1A5YNEJAr4EBhnjMn3dj3uYIwpN8ak4JjObaCI+PRlCxG5EjhsjFnn7Vo8YJgxpi+Ox3D80Xm5qUYNNQBdmktQNRzOa2QfAm8bY/7h7XrczRiTC3wDXOblUupqKHC183rZu8AoEfmbd0tyD2NMtvO/h4GPcFxKq1FDDcDKuQRFJAzHXIKfeLkmdRrOmwWvA+nGmAXersddRKS5iMQ6X0fiuCm33atF1ZExZooxpq0xJhHHv6uvjTG3e7msOhORxs4bcIhIY+AS4Iw9LRpkABpjbEDFXILpwHv+MpegiCwDVgFdRCRLRO72dk1uMBS4A8fRxEbn12hvF+UGrYFvRGQzjj/KXxpj/KbbiJ9pCfwgIpuANOAzY8zyM32oQXaDUUqp+tAgjwCVUqo+aAAqpQKWBqBSKmBpACqlApYGoFIqYGkAqkoicqeI/KkOn18uIrknzzDi7M/5k3Nmn787+3ZWvDdORH7jfP0XEdnj7EazXkSGOJfPE5FRZ1uXJ4jIY2fxmTr9/1XupwGo3Gkujv6AJ5sDLDTGdAKOA3cDiEgI8FvgnSrrPuocejYZeNW57AXn9w1JrQNQNTwagKpaIpIoIl+LyGYR+a+ItHcu7ygiq53zrs0UkYrZUjDG/BcoOGk7AowCPnAu+itwrfP1KGC9s+P7yb4HOjm3mwnEi0iraurs6DzyXCciK0Skq4iEiMgaEbnAuc6zIvKM83WGiDznrD9NRDo5lzcXkQ+dn1sjIkOdy6NEZKlz/c0iMkZEZgORziPVt53r3e7c3kYRedU5pRsicpeI/CIiaTg6jKsGRANQnc4LwF+NMb2At4HnncsXA4uNMT1xzNJzJvFAbpWQqzqzz1AccwdW5ypgS5Xv11N9gCwBHjTG9AMmAC8593Un8LKIXIRj/G7VyUzznPX/CcfMKBXtWmiMGQCM4X9TRU2rWN/5/+JrY8xkoMQYk2KMuU1EkoGbgaHOo9dy4DbnPIkznHUPA7qdpq3KS0K8XYBqsIYA1ztfvwU8V2X5tc7X7wDz6rCP1jiGOlY1V0QeB47gPFV2Ogy0qbqic/aZ84D3HQeaAIQDGGO2ichbwL+AIc55JSssq/Lfhc7XFwHdqmyniXP7F+EYM4tzu8eraceFQD9gjfPzkc56BwHfGmOOOOv9O9C5uv8Ryjs0AAOYiPwRuNf5rafG7uYAsSIS4jwyqzqzTwkQcdL6jxpjPuBUEc71qwrCcXSZcpp99wRygRYnLTfVvA4CBhtjSquuWCUQayI4jpannPTZa135sPIePQUOYMaYF52ncSnGmP0nvb2S/x353AascL5ejeMUkSrv17QPg2MaqRuci/4P+Nj5Oh3ndT4XdOak2T2ccw7uEZEbwXG9UUR6O19fDzQFRgAvVMzq4nRzlf+ucr7+D/BgxQoikuJ8+SXwxyrL45wvrc4pwAD+C9wgIi2c6zQVkQ44JoU9X0Tineve6GJbVT3RAFSn8yBwl3MmlDuAigcdjQNSncs7AXkVHxCRFcD7wIXOmW4udb41yfmZX3FcE3zdufwLHAFVI2d4dAKqe9DNbcDdzllAtgHXiEgzYDZwjzHmFxzX+hZX+Uycs/6HgUecyx4C+jtvdPwM3O9cPtO5/lbnPkY6ly8BNovI285nnzyOYzbizThCs7Ux5gDwJI6Q/ZFTT/eVl+lsMKpWRKQRjhsARkRuwfGwqrN+XouIfARMNMbsrGGd64C+xphpZ7ufKtvKoJYPzlH+S68BqtrqB/zJ2b0lF0c/vrqYjONmyGkDEMfv6fw67kepU+gRoFIqYOk1QKVUwNIAVEoFLA1ApVTA0gBUSgUsDUClVMDSAFRKBaz/ByU6g6ArBgMLAAAAAElFTkSuQmCC"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### SNP-set association testing"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "SNP-set association testing is performed similarly to single-SNP testing, except we test sets of SNPs by putting them together into one GSM, separate from any (optional) background GSM that corrects for confounding.  Both LRT (\"lrt\") and score (\"sc_davies\") tests are supported.  The LRT is computed by default, but you can switch to the score test by setting test=“sc_davies”.  The score test can be more conservative in some settings (and hence can have less power), but it is closed form and often can be computed much faster.  The algorithms in their current form are described in [Lippert et al., Bioinformatics 2014](http://bioinformatics.oxfordjournals.org/content/30/22/3206).\n",
    "\n",
    "Here is an example that uses the LRT and no background GSM--note the inflation in the results."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "source": [
    "# this will take a few minutes to run\r\n",
    "\r\n",
    "# import the algorithm and reader\r\n",
    "import datetime\r\n",
    "import numpy as np\r\n",
    "from fastlmm.association import snp_set\r\n",
    "from pysnptools.snpreader import Bed\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# define file names\r\n",
    "test_snps_fn = example_file('tests/datasets/synth/chr1.*','*.bed').replace('.bed','')\r\n",
    "pheno_fn = example_file(\"tests/datasets/synth/pheno_10_causals.txt\")\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "set_list_fn = example_file(\"tests/datasets/synth/chr1.sets.txt\")\r\n",
    "G0_fn = None\r\n",
    "\r\n",
    "\r\n",
    "# run SNP-set analysis\r\n",
    "results_df = snp_set(test_snps=test_snps_fn, G0=G0_fn, set_list=set_list_fn, pheno=pheno_fn, covar=cov_fn, test=\"lrt\")\r\n",
    "\r\n",
    "# qq plot\r\n",
    "from fastlmm.util.stats import plotp\r\n",
    "\r\n",
    "plotp.qqplot(results_df[\"P-value\"].values, xlim=[0,5], ylim=[0,5], addlambda=False, legend=\"QQ\")\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "    SetId  LogLikeAlt  LogLikeNull   P-value  #SNPs_in_Set  #ExcludedSNPs  chrm pos. range    Alt_h2  Alt_a2\n",
       "0  set_65 -703.888501  -707.609745  0.002564            10              0     1    650-659  0.029725     0.0\n",
       "1  set_86 -704.240753  -707.609745  0.003768            10              0     1    860-869  0.030321     0.0\n",
       "2  set_70 -704.525274  -707.609745  0.005158            10              0     1    700-709  0.029790     0.0\n",
       "3  set_18 -704.920236  -707.609745  0.008020            10              0     1    180-189  0.024803     0.0\n",
       "4  set_45 -705.410762  -707.609745  0.014031            10              0     1    450-459  0.023440     0.0\n",
       "5  set_84 -705.507312  -707.609745  0.015693            10              0     1    840-849  0.024002     0.0\n",
       "6  set_98 -705.623163  -707.609745  0.017965            10              0     1    980-989  0.022271     0.0\n",
       "7  set_80 -705.728130  -707.609745  0.020327            10              0     1    800-809  0.023943     0.0\n",
       "8  set_73 -706.000699  -707.609745  0.028153            10              0     1    730-739  0.019835     0.0\n",
       "9  set_92 -706.166636  -707.609745  0.034473            10              0     1    920-929  0.019799     0.0"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SetId</th>\n",
       "      <th>LogLikeAlt</th>\n",
       "      <th>LogLikeNull</th>\n",
       "      <th>P-value</th>\n",
       "      <th>#SNPs_in_Set</th>\n",
       "      <th>#ExcludedSNPs</th>\n",
       "      <th>chrm</th>\n",
       "      <th>pos. range</th>\n",
       "      <th>Alt_h2</th>\n",
       "      <th>Alt_a2</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>set_65</td>\n",
       "      <td>-703.888501</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.002564</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>650-659</td>\n",
       "      <td>0.029725</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>set_86</td>\n",
       "      <td>-704.240753</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.003768</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>860-869</td>\n",
       "      <td>0.030321</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>set_70</td>\n",
       "      <td>-704.525274</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.005158</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>700-709</td>\n",
       "      <td>0.029790</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>set_18</td>\n",
       "      <td>-704.920236</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.008020</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>180-189</td>\n",
       "      <td>0.024803</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>set_45</td>\n",
       "      <td>-705.410762</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.014031</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>450-459</td>\n",
       "      <td>0.023440</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>set_84</td>\n",
       "      <td>-705.507312</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.015693</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>840-849</td>\n",
       "      <td>0.024002</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>set_98</td>\n",
       "      <td>-705.623163</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.017965</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>980-989</td>\n",
       "      <td>0.022271</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>set_80</td>\n",
       "      <td>-705.728130</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.020327</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>800-809</td>\n",
       "      <td>0.023943</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>set_73</td>\n",
       "      <td>-706.000699</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.028153</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>730-739</td>\n",
       "      <td>0.019835</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>set_92</td>\n",
       "      <td>-706.166636</td>\n",
       "      <td>-707.609745</td>\n",
       "      <td>0.034473</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>920-929</td>\n",
       "      <td>0.019799</td>\n",
       "      <td>0.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 9
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "As just mentioned, we see inflation of the test statistic because no background GSM was used. When you include a background GSM (using `G0`) type I error is better controlled. As in the single SNP case, proximal contamination is avoided using LOOC."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "source": [
    "#Here we give a G0, the GSM, created via Bed file with all the chroms except chrom 1 (the test snps)\r\n",
    "\r\n",
    "#WARNING: Even on a fast machine, this takes 24 minutes (but, running with test=\"sc_davies\" takes seconds)\r\n",
    "\r\n",
    "bed_reader = Bed(example_file('tests/datasets/synth/all.*','*.bed'),count_A1=True)\r\n",
    "chrNot1 = bed_reader[:,bed_reader.pos[:,0] != 1]\r\n",
    "G0_fn = 'tempChrNot1.bed'\r\n",
    "Bed.write(G0_fn,chrNot1.read(),count_A1=True)\r\n",
    "\r\n",
    "# run SNP-set analysis\r\n",
    "results_df = snp_set(test_snps=test_snps_fn, G0=G0_fn, set_list=set_list_fn, pheno=pheno_fn, covar=cov_fn, test=\"lrt\")\r\n",
    "\r\n",
    "# qq plot\r\n",
    "plotp.qqplot(results_df[\"P-value\"].values, xlim=[0,5], ylim=[0,5], addlambda=False, legend=\"QQ\")\r\n",
    "\r\n",
    "# print head of results data frame\r\n",
    "import pandas as pd\r\n",
    "pd.set_option('display.width', 1000)\r\n",
    "results_df.head(n=10)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "constructing LMM - this should only happen once.\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "    SetId  LogLikeAlt  LogLikeNull   P-value  #SNPs_in_Set  #ExcludedSNPs  chrm pos. range    Alt_h2  Alt_h2_1\n",
       "0  set_60 -697.449026  -699.619196  0.016062            10              0     1    600-609  0.630039  0.024977\n",
       "1  set_11 -697.979257  -699.619196  0.028124            10              0     1    110-119  0.618464  0.022458\n",
       "2  set_14 -698.359356  -699.619196  0.042932            10              0     1    140-149  0.623297  0.019099\n",
       "3  set_80 -698.401148  -699.619196  0.045045            10              0     1    800-809  0.619344  0.017966\n",
       "4  set_70 -698.430620  -699.619196  0.046607            10              0     1    700-709  0.577376  0.017370\n",
       "5  set_45 -698.442867  -699.619196  0.047275            10              0     1    450-459  0.592120  0.015451\n",
       "6  set_86 -698.518404  -699.619196  0.051648            10              0     1    860-869  0.592057  0.017528\n",
       "7  set_92 -698.547797  -699.619196  0.053477            10              0     1    920-929  0.621042  0.017506\n",
       "8  set_65 -698.714102  -699.619196  0.065409            10              0     1    650-659  0.584255  0.016500\n",
       "9  set_93 -698.820185  -699.619196  0.074734            10              0     1    930-939  0.618306  0.012515"
      ],
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>SetId</th>\n",
       "      <th>LogLikeAlt</th>\n",
       "      <th>LogLikeNull</th>\n",
       "      <th>P-value</th>\n",
       "      <th>#SNPs_in_Set</th>\n",
       "      <th>#ExcludedSNPs</th>\n",
       "      <th>chrm</th>\n",
       "      <th>pos. range</th>\n",
       "      <th>Alt_h2</th>\n",
       "      <th>Alt_h2_1</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>set_60</td>\n",
       "      <td>-697.449026</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.016062</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>600-609</td>\n",
       "      <td>0.630039</td>\n",
       "      <td>0.024977</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>set_11</td>\n",
       "      <td>-697.979257</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.028124</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>110-119</td>\n",
       "      <td>0.618464</td>\n",
       "      <td>0.022458</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>set_14</td>\n",
       "      <td>-698.359356</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.042932</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>140-149</td>\n",
       "      <td>0.623297</td>\n",
       "      <td>0.019099</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>set_80</td>\n",
       "      <td>-698.401148</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.045045</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>800-809</td>\n",
       "      <td>0.619344</td>\n",
       "      <td>0.017966</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>set_70</td>\n",
       "      <td>-698.430620</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.046607</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>700-709</td>\n",
       "      <td>0.577376</td>\n",
       "      <td>0.017370</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>set_45</td>\n",
       "      <td>-698.442867</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.047275</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>450-459</td>\n",
       "      <td>0.592120</td>\n",
       "      <td>0.015451</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>set_86</td>\n",
       "      <td>-698.518404</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.051648</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>860-869</td>\n",
       "      <td>0.592057</td>\n",
       "      <td>0.017528</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>set_92</td>\n",
       "      <td>-698.547797</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.053477</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>920-929</td>\n",
       "      <td>0.621042</td>\n",
       "      <td>0.017506</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>set_65</td>\n",
       "      <td>-698.714102</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.065409</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>650-659</td>\n",
       "      <td>0.584255</td>\n",
       "      <td>0.016500</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>set_93</td>\n",
       "      <td>-698.820185</td>\n",
       "      <td>-699.619196</td>\n",
       "      <td>0.074734</td>\n",
       "      <td>10</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>930-939</td>\n",
       "      <td>0.618306</td>\n",
       "      <td>0.012515</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ]
     },
     "metadata": {},
     "execution_count": 10
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 360x360 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "The `G1` option available for single-marker testing is not yet supported for set testing. With the same caveats as previously described, however, you can use PC covariates and a `G0` based on selected SNPs when your data is confounded, for example, by population structure."
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Prediction\n",
    "\n",
    "We can train on one set of examples and make predictions on another set."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "source": [
    "from pysnptools.snpreader import Pheno, Bed\r\n",
    "from fastlmm.inference import FastLMM\r\n",
    "import numpy as np\r\n",
    "from fastlmm.util import example_file # Download and return local file name\r\n",
    "\r\n",
    "# define file names\r\n",
    "bed_fn = example_file('tests/datasets/synth/all.*','*.bed')\r\n",
    "snp_reader = Bed(bed_fn, count_A1=True)\r\n",
    "pheno_fn = example_file(\"tests/datasets/synth/pheno_10_causals.txt\")\r\n",
    "cov_fn = example_file(\"tests/datasets/synth/cov.txt\")\r\n",
    "\r\n",
    "# Divide the data into train (all but the last 10 individuals) and test (the last 10 individuals)\r\n",
    "# (the cov and pheno will automatially be divided to match)\r\n",
    "train = snp_reader[:-10,:]\r\n",
    "test = snp_reader[-10:,:]\r\n",
    "\r\n",
    "# In the style of scikit-learn, create a predictor and then train it.\r\n",
    "fastlmm = FastLMM(GB_goal=2)\r\n",
    "fastlmm.fit(K0_train=train,X=cov_fn,y=pheno_fn)\r\n",
    "\r\n",
    "# Now predict with it\r\n",
    "mean, covariance = fastlmm.predict(K0_whole_test=test,X=cov_fn)\r\n",
    "\r\n",
    "print(\"Predicted means and stdevs\")\r\n",
    "print(mean.val[:,0])\r\n",
    "print(np.sqrt(np.diag(covariance.val)))\r\n",
    "\r\n",
    "#Plot actual phenotype and predicted phenotype\r\n",
    "whole_pheno = Pheno(pheno_fn)\r\n",
    "actual_pheno = whole_pheno[whole_pheno.iid_to_index(mean.iid),:].read()\r\n",
    "pylab.plot(actual_pheno.val,\"r.\")\r\n",
    "pylab.plot(mean.val,\"b.\")\r\n",
    "pylab.errorbar(np.arange(mean.iid_count),mean.val,yerr=np.sqrt(np.diag(covariance.val)),fmt='.')\r\n",
    "pylab.xlabel('testing examples')\r\n",
    "pylab.ylabel('phenotype, actual (red) and predicted (blue with stdev)')\r\n",
    "pylab.show()"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Predicted means and stdevs\n",
      "[-0.01441867 -0.28643403 -0.25428547  0.08895203 -0.2951101  -0.39238038\n",
      "  0.06844377 -0.43282082 -0.21734717 -0.35522391]\n",
      "[0.95795614 0.96181176 0.95260425 0.9499153  0.9604778  0.95411447\n",
      " 0.96020393 0.9817148  0.95198988 0.96271045]\n"
     ]
    },
    {
     "output_type": "display_data",
     "data": {
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {
      "needs_background": "light"
     }
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Appendix"
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "Columns in the output are as follows:\n",
    "\n",
    "`SNP` or `Set`\n",
    "The SNP or set identifier tested.\n",
    "\n",
    "`PValue`\n",
    "The _P_ value computed for the SNP tested.\n",
    "\n",
    "`NullLogLike`\n",
    "The log likelihood of the null model.\n",
    "\n",
    "`AltLogLike`\n",
    "The log likelihood of the alternative model.\n",
    "\n",
    "Global statistics, such as sample size and the number of SNPs tested are printed to stdout at the end of the run.\n",
    "\n",
    "###### Single-SNP testing only:\n",
    "\n",
    "`Chr`\n",
    "The chromosome identifier for the SNP tested or 0 if unplaced.  Taken from the PLINK file.\n",
    "\n",
    "`GenDist`\n",
    "The genetic distance of the SNP on the chromosome.  Taken from the PLINK file.  Any units are allowed, but typically centimorgans or morgans are used.\n",
    "\n",
    "`ChrPos`\n",
    "The base-pair position of the SNP on the chromosome (bp units).  Taken from the PLINK file.\n",
    "\n",
    "`SnpWeight`\n",
    "The fixed-effect weight of the SNP.\n",
    "\n",
    "`SnpWeightSE`\n",
    "The standard error of the SnpWeight.\n",
    "\n",
    "`Nullh2`\n",
    "The narrow sense heritability given by h2 $=σ_g^2/(σ_g^2+σ_e^2)$ on the null model.\n",
    "\n",
    "###### SNP-set testing only:\n",
    "\n",
    "`#SNPs_in_Set`\n",
    "The number of markers in the set.\n",
    "\n",
    "`Alt_h2`\n",
    "The value found in the alt. model, given by $\\sigma^2(h2(a2*K_S+(1-a2) * K_C)+(1-h2)*I)$, where $K_C$ is the NxN matrix to correct for confounding, and $K_S$ is the matrix containing SNPs to be tested.\t\n",
    "\n",
    "`Alt_a2`\n",
    "See Alt_h2.\n",
    "\n",
    "`Null_h2`\n",
    "The value found in the null model, given by $\\sigma^2(h2*K_C+1-h2)*I)$, where $K_C$ is the $N \\times N$ matrix to correct for confounding.\n"
   ],
   "metadata": {}
  }
 ],
 "metadata": {
  "anaconda-cloud": {},
  "kernelspec": {
   "name": "python3",
   "display_name": "Python 3.7.10 64-bit ('gtg': conda)"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  },
  "interpreter": {
   "hash": "4c1fc4438d6c4857b2f27b149a81a0fed04badbd4b966100ab17cc58a9085210"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}